mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 06:20:43 +00:00
fix(usage): serve usage from durable transcript aggregate cache
Serve usage.cost and sessions.usage from a durable transcript aggregate cache with guarded refreshes, cache-status UI localization, and regression coverage. Thanks @Marvinthebored.
This commit is contained in:
@@ -29,6 +29,7 @@ Docs: https://docs.openclaw.ai
|
||||
|
||||
### Fixes
|
||||
|
||||
- Gateway/usage: serve `usage.cost` and `sessions.usage` from a durable transcript aggregate cache with lock-safe background refreshes and localized stale-cache status, so large usage views avoid repeated full scans. (#76650) Thanks @Marvinthebored.
|
||||
- Config/messages: coerce boolean `messages.visibleReplies` and `messages.groupChat.visibleReplies` values to the documented enum modes so an intuitive toggle no longer invalidates config and drops channel startup. Fixes #75390. Thanks @scottgl9.
|
||||
- Feishu: accept and honor `channels.feishu.blockStreaming` at the top level and per account, while keeping the legacy default off so Feishu cards no longer reject documented config or silently drop block replies. Fixes #75555. Thanks @vincentkoc.
|
||||
- Google Chat: normalize custom Google auth transport headers before google-auth/gaxios interceptors run, restoring webhook token verification when certificate retrieval expects Fetch `Headers`. Fixes #76742. Thanks @donbowman.
|
||||
|
||||
@@ -83,6 +83,29 @@ export function getGatewayModelPricingCacheMeta(): {
|
||||
};
|
||||
}
|
||||
|
||||
function stablePricingValue(value: unknown): string {
|
||||
if (typeof value === "number") {
|
||||
return Number.isFinite(value) ? JSON.stringify(value) : JSON.stringify(String(value));
|
||||
}
|
||||
if (value === null || typeof value !== "object") {
|
||||
return JSON.stringify(value);
|
||||
}
|
||||
if (Array.isArray(value)) {
|
||||
return `[${value.map((entry) => stablePricingValue(entry)).join(",")}]`;
|
||||
}
|
||||
const record = value as Record<string, unknown>;
|
||||
return `{${Object.keys(record)
|
||||
.filter((key) => record[key] !== undefined)
|
||||
.toSorted()
|
||||
.map((key) => `${JSON.stringify(key)}:${stablePricingValue(record[key])}`)
|
||||
.join(",")}}`;
|
||||
}
|
||||
|
||||
export function getGatewayModelPricingCacheFingerprint(): string {
|
||||
const entries = Array.from(cachedPricing.entries()).toSorted(([a], [b]) => a.localeCompare(b));
|
||||
return stablePricingValue(entries);
|
||||
}
|
||||
|
||||
export function __resetGatewayModelPricingCacheForTest(): void {
|
||||
clearGatewayModelPricingCacheState();
|
||||
}
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
// CAL-003 compliance: no mock of internal branches. Growth is driven through
|
||||
// the __test.loadCostUsageSummaryCached seam (same entry point usage.test.ts
|
||||
// already exercises) with distinct (startMs, endMs) pairs. Only the external
|
||||
// loadCostUsageSummary dependency is stubbed.
|
||||
// loadCostUsageSummaryFromCache dependency is stubbed.
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { OpenClawConfig } from "../../config/config.js";
|
||||
|
||||
const mocks = vi.hoisted(() => ({
|
||||
loadCostUsageSummary: vi.fn(),
|
||||
loadCostUsageSummaryFromCache: vi.fn(),
|
||||
}));
|
||||
|
||||
function createSummary() {
|
||||
@@ -48,7 +48,7 @@ vi.mock("../../infra/session-cost-usage.js", async () => {
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
loadCostUsageSummary: mocks.loadCostUsageSummary,
|
||||
loadCostUsageSummaryFromCache: mocks.loadCostUsageSummaryFromCache,
|
||||
};
|
||||
});
|
||||
|
||||
@@ -61,7 +61,7 @@ describe("costUsageCache bounded growth", () => {
|
||||
__test.costUsageCache.clear();
|
||||
vi.useRealTimers();
|
||||
vi.clearAllMocks();
|
||||
mocks.loadCostUsageSummary.mockResolvedValue(createSummary());
|
||||
mocks.loadCostUsageSummaryFromCache.mockResolvedValue(createSummary());
|
||||
});
|
||||
|
||||
it("does not grow without bound when (startMs, endMs) varies across day rollover and range switches", async () => {
|
||||
@@ -100,7 +100,7 @@ describe("costUsageCache bounded growth", () => {
|
||||
it("evicts settled entries before in-flight entries when possible", async () => {
|
||||
const config = {} as OpenClawConfig;
|
||||
const pending = new Promise<ReturnType<typeof createSummary>>(() => {});
|
||||
mocks.loadCostUsageSummary.mockReturnValueOnce(pending);
|
||||
mocks.loadCostUsageSummaryFromCache.mockReturnValueOnce(pending);
|
||||
|
||||
const inFlight = __test.loadCostUsageSummaryCached({
|
||||
startMs: 1,
|
||||
@@ -126,7 +126,7 @@ describe("costUsageCache bounded growth", () => {
|
||||
await Promise.resolve();
|
||||
|
||||
expect(__test.costUsageCache.has("1-2")).toBe(true);
|
||||
expect(mocks.loadCostUsageSummary).toHaveBeenCalledTimes(257);
|
||||
expect(mocks.loadCostUsageSummaryFromCache).toHaveBeenCalledTimes(257);
|
||||
void inFlight.catch(() => {});
|
||||
void repeated.catch(() => {});
|
||||
});
|
||||
|
||||
@@ -52,18 +52,26 @@ vi.mock("../../infra/session-cost-usage.js", async () => {
|
||||
}
|
||||
return [];
|
||||
}),
|
||||
loadSessionCostSummary: vi.fn(async () => ({
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
totalTokens: 0,
|
||||
totalCost: 0,
|
||||
inputCost: 0,
|
||||
outputCost: 0,
|
||||
cacheReadCost: 0,
|
||||
cacheWriteCost: 0,
|
||||
missingCostEntries: 0,
|
||||
loadSessionCostSummaryFromCache: vi.fn(async () => ({
|
||||
summary: {
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
totalTokens: 0,
|
||||
totalCost: 0,
|
||||
inputCost: 0,
|
||||
outputCost: 0,
|
||||
cacheReadCost: 0,
|
||||
cacheWriteCost: 0,
|
||||
missingCostEntries: 0,
|
||||
},
|
||||
cacheStatus: {
|
||||
status: "fresh",
|
||||
cachedFiles: 1,
|
||||
pendingFiles: 0,
|
||||
staleFiles: 0,
|
||||
},
|
||||
})),
|
||||
loadSessionUsageTimeSeries: vi.fn(async () => ({
|
||||
sessionId: "s-opus",
|
||||
@@ -75,7 +83,7 @@ vi.mock("../../infra/session-cost-usage.js", async () => {
|
||||
|
||||
import {
|
||||
discoverAllSessions,
|
||||
loadSessionCostSummary,
|
||||
loadSessionCostSummaryFromCache,
|
||||
loadSessionLogs,
|
||||
loadSessionUsageTimeSeries,
|
||||
} from "../../infra/session-cost-usage.js";
|
||||
@@ -189,9 +197,16 @@ describe("sessions.usage", () => {
|
||||
const sessions = expectSuccessfulSessionsUsage(respond);
|
||||
expect(sessions).toHaveLength(1);
|
||||
expect(sessions[0]?.key).toBe(storeKey);
|
||||
expect(vi.mocked(loadSessionCostSummary)).toHaveBeenCalled();
|
||||
expect(vi.mocked(loadSessionCostSummaryFromCache)).toHaveBeenCalled();
|
||||
expect(
|
||||
vi.mocked(loadSessionCostSummary).mock.calls.some((call) => call[0]?.agentId === "opus"),
|
||||
vi
|
||||
.mocked(loadSessionCostSummaryFromCache)
|
||||
.mock.calls.some((call) => call[0]?.agentId === "opus"),
|
||||
).toBe(true);
|
||||
expect(
|
||||
vi
|
||||
.mocked(loadSessionCostSummaryFromCache)
|
||||
.mock.calls.every((call) => call[0]?.refreshMode === "sync-when-empty"),
|
||||
).toBe(true);
|
||||
});
|
||||
} finally {
|
||||
|
||||
@@ -7,7 +7,7 @@ vi.mock("../../infra/session-cost-usage.js", async () => {
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
loadCostUsageSummary: vi.fn(async () => ({
|
||||
loadCostUsageSummaryFromCache: vi.fn(async () => ({
|
||||
updatedAt: Date.now(),
|
||||
startDate: "2026-02-01",
|
||||
endDate: "2026-02-02",
|
||||
@@ -17,7 +17,7 @@ vi.mock("../../infra/session-cost-usage.js", async () => {
|
||||
};
|
||||
});
|
||||
|
||||
import { loadCostUsageSummary } from "../../infra/session-cost-usage.js";
|
||||
import { loadCostUsageSummaryFromCache } from "../../infra/session-cost-usage.js";
|
||||
import { __test } from "./usage.js";
|
||||
|
||||
describe("gateway usage helpers", () => {
|
||||
@@ -156,6 +156,9 @@ describe("gateway usage helpers", () => {
|
||||
|
||||
expect(a.totals.totalTokens).toBe(1);
|
||||
expect(b.totals.totalTokens).toBe(1);
|
||||
expect(vi.mocked(loadCostUsageSummary)).toHaveBeenCalledTimes(1);
|
||||
expect(vi.mocked(loadCostUsageSummaryFromCache)).toHaveBeenCalledTimes(1);
|
||||
expect(vi.mocked(loadCostUsageSummaryFromCache).mock.calls[0]?.[0]).toMatchObject({
|
||||
refreshMode: "sync-when-empty",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,13 +13,14 @@ import type {
|
||||
SessionModelUsage,
|
||||
} from "../../infra/session-cost-usage.js";
|
||||
import {
|
||||
loadCostUsageSummary,
|
||||
loadCostUsageSummaryFromCache,
|
||||
loadSessionLogs,
|
||||
loadSessionCostSummary,
|
||||
loadSessionCostSummaryFromCache,
|
||||
loadSessionUsageTimeSeries,
|
||||
discoverAllSessions,
|
||||
resolveExistingUsageSessionFile,
|
||||
type DiscoveredSession,
|
||||
type UsageCacheStatus,
|
||||
} from "../../infra/session-cost-usage.js";
|
||||
import { parseAgentSessionKey } from "../../routing/session-key.js";
|
||||
import { resolvePreferredSessionKeyForSessionIdMatches } from "../../sessions/session-id-resolution.js";
|
||||
@@ -313,6 +314,7 @@ async function discoverAllSessionsForUsage(params: {
|
||||
agentId: agent.id,
|
||||
startMs: params.startMs,
|
||||
endMs: params.endMs,
|
||||
includeFirstUserMessage: false,
|
||||
});
|
||||
return sessions.map((session) => Object.assign({}, session, { agentId: agent.id }));
|
||||
}),
|
||||
@@ -328,7 +330,12 @@ async function loadCostUsageSummaryCached(params: {
|
||||
const cacheKey = `${params.startMs}-${params.endMs}`;
|
||||
const now = Date.now();
|
||||
const cached = costUsageCache.get(cacheKey);
|
||||
if (cached?.summary && cached.updatedAt && now - cached.updatedAt < COST_USAGE_CACHE_TTL_MS) {
|
||||
if (
|
||||
cached?.summary &&
|
||||
cached.updatedAt &&
|
||||
now - cached.updatedAt < COST_USAGE_CACHE_TTL_MS &&
|
||||
cached.summary.cacheStatus?.status !== "refreshing"
|
||||
) {
|
||||
return cached.summary;
|
||||
}
|
||||
|
||||
@@ -340,13 +347,18 @@ async function loadCostUsageSummaryCached(params: {
|
||||
}
|
||||
|
||||
const entry: CostUsageCacheEntry = cached ?? {};
|
||||
const inFlight = loadCostUsageSummary({
|
||||
const inFlight = loadCostUsageSummaryFromCache({
|
||||
startMs: params.startMs,
|
||||
endMs: params.endMs,
|
||||
config: params.config,
|
||||
requestRefresh: true,
|
||||
refreshMode: "sync-when-empty",
|
||||
})
|
||||
.then((summary) => {
|
||||
setCostUsageCache(cacheKey, { summary, updatedAt: Date.now() });
|
||||
setCostUsageCache(cacheKey, {
|
||||
summary,
|
||||
updatedAt: summary.cacheStatus?.status === "refreshing" ? undefined : Date.now(),
|
||||
});
|
||||
return summary;
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -372,6 +384,28 @@ async function loadCostUsageSummaryCached(params: {
|
||||
return await inFlight;
|
||||
}
|
||||
|
||||
function mergeUsageCacheStatus(
|
||||
target: UsageCacheStatus | undefined,
|
||||
source: UsageCacheStatus,
|
||||
): UsageCacheStatus {
|
||||
if (!target) {
|
||||
return { ...source };
|
||||
}
|
||||
const statusRank = { fresh: 0, partial: 1, stale: 2, refreshing: 3 } as const;
|
||||
return {
|
||||
status: statusRank[source.status] > statusRank[target.status] ? source.status : target.status,
|
||||
cachedFiles: target.cachedFiles + source.cachedFiles,
|
||||
pendingFiles: target.pendingFiles + source.pendingFiles,
|
||||
staleFiles: target.staleFiles + source.staleFiles,
|
||||
refreshedAt:
|
||||
target.refreshedAt === undefined
|
||||
? source.refreshedAt
|
||||
: source.refreshedAt === undefined
|
||||
? target.refreshedAt
|
||||
: Math.max(target.refreshedAt, source.refreshedAt),
|
||||
};
|
||||
}
|
||||
|
||||
// Exposed for unit tests (kept as a single export to avoid widening the public API surface).
|
||||
export const __test = {
|
||||
parseDateParts,
|
||||
@@ -598,6 +632,7 @@ export const usageHandlers: GatewayRequestHandlers = {
|
||||
{ date: string; count: number; sum: number; min: number; max: number; p95Max: number }
|
||||
>();
|
||||
const modelDailyMap = new Map<string, SessionDailyModelUsage>();
|
||||
let cacheStatus: UsageCacheStatus | undefined;
|
||||
|
||||
const emptyTotals = (): CostUsageSummary["totals"] => ({
|
||||
input: 0,
|
||||
@@ -631,7 +666,7 @@ export const usageHandlers: GatewayRequestHandlers = {
|
||||
|
||||
for (const merged of limitedEntries) {
|
||||
const agentId = parseAgentSessionKey(merged.key)?.agentId;
|
||||
const usage = await loadSessionCostSummary({
|
||||
const cachedUsage = await loadSessionCostSummaryFromCache({
|
||||
sessionId: merged.sessionId,
|
||||
sessionEntry: merged.storeEntry,
|
||||
sessionFile: merged.sessionFile,
|
||||
@@ -639,7 +674,10 @@ export const usageHandlers: GatewayRequestHandlers = {
|
||||
agentId,
|
||||
startMs,
|
||||
endMs,
|
||||
refreshMode: "sync-when-empty",
|
||||
});
|
||||
cacheStatus = mergeUsageCacheStatus(cacheStatus, cachedUsage.cacheStatus);
|
||||
const usage = cachedUsage.summary;
|
||||
|
||||
if (usage) {
|
||||
aggregateTotals.input += usage.input;
|
||||
@@ -843,6 +881,7 @@ export const usageHandlers: GatewayRequestHandlers = {
|
||||
sessions,
|
||||
totals: aggregateTotals,
|
||||
aggregates,
|
||||
cacheStatus,
|
||||
};
|
||||
|
||||
respond(true, result, undefined);
|
||||
|
||||
@@ -1,16 +1,25 @@
|
||||
import nodeFs from "node:fs";
|
||||
import fs from "node:fs/promises";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
||||
import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import {
|
||||
__setGatewayModelPricingForTest,
|
||||
clearGatewayModelPricingCacheState,
|
||||
} from "../gateway/model-pricing-cache-state.js";
|
||||
import { createSuiteTempRootTracker } from "../test-helpers/temp-dir.js";
|
||||
import { withEnvAsync } from "../test-utils/env.js";
|
||||
import {
|
||||
discoverAllSessions,
|
||||
loadCostUsageSummary,
|
||||
loadCostUsageSummaryFromCache,
|
||||
loadSessionCostSummary,
|
||||
loadSessionCostSummaryFromCache,
|
||||
loadSessionLogs,
|
||||
loadSessionUsageTimeSeries,
|
||||
requestCostUsageCacheRefresh,
|
||||
refreshCostUsageCache,
|
||||
} from "./session-cost-usage.js";
|
||||
|
||||
describe("session cost usage", () => {
|
||||
@@ -25,6 +34,16 @@ describe("session cost usage", () => {
|
||||
JSON.stringify(entry),
|
||||
"",
|
||||
].join("\n");
|
||||
const waitFor = async (predicate: () => Promise<boolean>, timeoutMs = 2_000): Promise<void> => {
|
||||
const deadline = Date.now() + timeoutMs;
|
||||
while (Date.now() < deadline) {
|
||||
if (await predicate()) {
|
||||
return;
|
||||
}
|
||||
await new Promise((resolve) => setTimeout(resolve, 25));
|
||||
}
|
||||
throw new Error("Timed out waiting for condition");
|
||||
};
|
||||
|
||||
beforeAll(async () => {
|
||||
await suiteRootTracker.setup();
|
||||
@@ -176,6 +195,898 @@ describe("session cost usage", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("serves usage cost from durable aggregate cache without rescanning stale files", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache.jsonl");
|
||||
const now = new Date("2026-02-05T12:00:00.000Z");
|
||||
const entry = {
|
||||
type: "message",
|
||||
timestamp: now.toISOString(),
|
||||
message: {
|
||||
role: "assistant",
|
||||
provider: "openai",
|
||||
model: "gpt-5.4",
|
||||
usage: {
|
||||
input: 10,
|
||||
output: 20,
|
||||
totalTokens: 30,
|
||||
cost: { total: 0.03 },
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
await fs.writeFile(sessionFile, transcriptText("sess-cache", entry), "utf-8");
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache();
|
||||
await fs.appendFile(
|
||||
sessionFile,
|
||||
`${JSON.stringify({
|
||||
...entry,
|
||||
timestamp: "2026-02-05T12:01:00.000Z",
|
||||
})}\n`,
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
|
||||
expect(summary.totals.totalTokens).toBe(30);
|
||||
expect(summary.cacheStatus?.status).toBe("partial");
|
||||
expect(summary.cacheStatus?.pendingFiles).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
it("refreshes append-only durable aggregate cache by scanning only appended bytes", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-append");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-append.jsonl");
|
||||
const entry = {
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
provider: "openai",
|
||||
model: "gpt-5.4",
|
||||
usage: {
|
||||
input: 10,
|
||||
output: 20,
|
||||
totalTokens: 30,
|
||||
cost: { total: 0.03 },
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
await fs.writeFile(sessionFile, transcriptText("sess-cache-append", entry), "utf-8");
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache();
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const beforeCache = JSON.parse(await fs.readFile(cachePath, "utf-8")) as {
|
||||
files: Record<string, { parsedRecords: number; countedRecords: number }>;
|
||||
};
|
||||
expect(beforeCache.files[sessionFile]?.parsedRecords).toBe(1);
|
||||
|
||||
await fs.appendFile(
|
||||
sessionFile,
|
||||
`${JSON.stringify({
|
||||
...entry,
|
||||
timestamp: "2026-02-05T12:01:00.000Z",
|
||||
})}\n`,
|
||||
"utf-8",
|
||||
);
|
||||
await refreshCostUsageCache();
|
||||
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
const afterCache = JSON.parse(await fs.readFile(cachePath, "utf-8")) as {
|
||||
files: Record<string, { parsedRecords: number; countedRecords: number }>;
|
||||
};
|
||||
|
||||
expect(summary.totals.totalTokens).toBe(60);
|
||||
expect(summary.totals.totalCost).toBeCloseTo(0.06, 5);
|
||||
expect(summary.cacheStatus?.status).toBe("fresh");
|
||||
expect(afterCache.files[sessionFile]?.parsedRecords).toBe(2);
|
||||
expect(afterCache.files[sessionFile]?.countedRecords).toBe(2);
|
||||
});
|
||||
});
|
||||
|
||||
it("bounds durable aggregate scans to the stat snapshot", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-active-write");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-active-write.jsonl");
|
||||
const entry = {
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
provider: "openai",
|
||||
model: "gpt-5.4",
|
||||
usage: {
|
||||
input: 10,
|
||||
output: 20,
|
||||
totalTokens: 30,
|
||||
cost: { total: 0.03 },
|
||||
},
|
||||
},
|
||||
};
|
||||
const initialText = transcriptText("sess-cache-active-write", entry);
|
||||
await fs.writeFile(sessionFile, initialText, "utf-8");
|
||||
const statSnapshot = await nodeFs.promises.stat(sessionFile);
|
||||
await fs.appendFile(
|
||||
sessionFile,
|
||||
`${JSON.stringify({
|
||||
...entry,
|
||||
timestamp: "2026-02-05T12:01:00.000Z",
|
||||
})}\n`,
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const originalStat = nodeFs.promises.stat.bind(nodeFs.promises);
|
||||
let returnedStaleStat = false;
|
||||
const statSpy = vi.spyOn(nodeFs.promises, "stat").mockImplementation(async (target) => {
|
||||
if (String(target) === sessionFile && !returnedStaleStat) {
|
||||
returnedStaleStat = true;
|
||||
return statSnapshot;
|
||||
}
|
||||
return await originalStat(target);
|
||||
});
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
try {
|
||||
await refreshCostUsageCache();
|
||||
} finally {
|
||||
statSpy.mockRestore();
|
||||
}
|
||||
await refreshCostUsageCache();
|
||||
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
|
||||
expect(summary.totals.totalTokens).toBe(60);
|
||||
expect(summary.totals.totalCost).toBeCloseTo(0.06, 5);
|
||||
expect(summary.cacheStatus?.status).toBe("fresh");
|
||||
});
|
||||
});
|
||||
|
||||
it("invalidates durable aggregate cache when pricing config changes", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-pricing");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-pricing.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
transcriptText("sess-cache-pricing", {
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
provider: "openai",
|
||||
model: "gpt-5.4",
|
||||
usage: {
|
||||
input: 1000,
|
||||
output: 1000,
|
||||
totalTokens: 2000,
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const configFor = (input: number, output: number) =>
|
||||
({
|
||||
models: {
|
||||
providers: {
|
||||
openai: {
|
||||
models: [{ id: "gpt-5.4", cost: { input, output, cacheRead: 0, cacheWrite: 0 } }],
|
||||
},
|
||||
},
|
||||
},
|
||||
}) as unknown as OpenClawConfig;
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache({ config: configFor(1, 1) });
|
||||
|
||||
const stale = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
config: configFor(2, 2),
|
||||
requestRefresh: false,
|
||||
});
|
||||
expect(stale.totals.totalCost).toBe(0);
|
||||
expect(stale.cacheStatus?.status).toBe("stale");
|
||||
|
||||
await refreshCostUsageCache({ config: configFor(2, 2) });
|
||||
const refreshed = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
config: configFor(2, 2),
|
||||
requestRefresh: false,
|
||||
});
|
||||
expect(refreshed.totals.totalCost).toBeCloseTo(0.004, 5);
|
||||
expect(refreshed.cacheStatus?.status).toBe("fresh");
|
||||
});
|
||||
});
|
||||
|
||||
it("rebuilds cold durable aggregate cache synchronously when requested", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-cold-sync");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-cold-sync.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
transcriptText("sess-cache-cold-sync", {
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
provider: "openai",
|
||||
model: "gpt-5.4",
|
||||
usage: {
|
||||
input: 10,
|
||||
output: 20,
|
||||
totalTokens: 30,
|
||||
cost: { total: 0.03 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
refreshMode: "sync-when-empty",
|
||||
});
|
||||
|
||||
expect(summary.totals.totalTokens).toBe(30);
|
||||
expect(summary.totals.totalCost).toBeCloseTo(0.03, 5);
|
||||
expect(summary.cacheStatus?.status).toBe("fresh");
|
||||
expect(summary.cacheStatus).not.toHaveProperty("cachePath");
|
||||
});
|
||||
});
|
||||
|
||||
it("limits synchronous cold aggregate rebuilds to the requested range", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-cold-sync-range");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const oldSessionFile = path.join(sessionsDir, "sess-cache-cold-sync-old.jsonl");
|
||||
const currentSessionFile = path.join(sessionsDir, "sess-cache-cold-sync-current.jsonl");
|
||||
await fs.writeFile(
|
||||
oldSessionFile,
|
||||
transcriptText("sess-cache-cold-sync-old", {
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 100,
|
||||
output: 100,
|
||||
totalTokens: 200,
|
||||
cost: { total: 0.2 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
await fs.writeFile(
|
||||
currentSessionFile,
|
||||
transcriptText("sess-cache-cold-sync-current", {
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 10,
|
||||
output: 20,
|
||||
totalTokens: 30,
|
||||
cost: { total: 0.03 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
await fs.utimes(
|
||||
oldSessionFile,
|
||||
new Date("2025-12-05T12:00:00.000Z"),
|
||||
new Date("2025-12-05T12:00:00.000Z"),
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
refreshMode: "sync-when-empty",
|
||||
});
|
||||
|
||||
expect(summary.totals.totalTokens).toBe(30);
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
await waitFor(async () => {
|
||||
const cache = JSON.parse(await fs.readFile(cachePath, "utf-8")) as {
|
||||
files: Record<string, unknown>;
|
||||
};
|
||||
return Boolean(cache.files[oldSessionFile]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it("invalidates durable aggregate cache when gateway pricing cache changes", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-gateway-pricing");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-gateway-pricing.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
transcriptText("sess-cache-gateway-pricing", {
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
provider: "openai",
|
||||
model: "gpt-5.4",
|
||||
usage: {
|
||||
input: 1000,
|
||||
output: 1000,
|
||||
totalTokens: 2000,
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const setGatewayPricing = (input: number, output: number) =>
|
||||
__setGatewayModelPricingForTest([
|
||||
{
|
||||
provider: "openai",
|
||||
model: "gpt-5.4",
|
||||
pricing: { input, output, cacheRead: 0, cacheWrite: 0 },
|
||||
},
|
||||
]);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
try {
|
||||
setGatewayPricing(1, 1);
|
||||
await refreshCostUsageCache();
|
||||
|
||||
setGatewayPricing(2, 2);
|
||||
const stale = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
expect(stale.totals.totalCost).toBe(0);
|
||||
expect(stale.cacheStatus?.status).toBe("stale");
|
||||
|
||||
await refreshCostUsageCache();
|
||||
const refreshed = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
expect(refreshed.totals.totalCost).toBeCloseTo(0.004, 5);
|
||||
expect(refreshed.cacheStatus?.status).toBe("fresh");
|
||||
} finally {
|
||||
clearGatewayModelPricingCacheState();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it("preserves sessions usage range semantics when cached summaries span the range", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-session-range");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-range.jsonl");
|
||||
const entry = (timestamp: string, totalTokens: number) => ({
|
||||
type: "message",
|
||||
timestamp,
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: totalTokens,
|
||||
output: 0,
|
||||
totalTokens,
|
||||
cost: { total: totalTokens / 1000 },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
[
|
||||
JSON.stringify(entry("2026-02-04T12:00:00.000Z", 10)),
|
||||
JSON.stringify(entry("2026-02-05T12:00:00.000Z", 20)),
|
||||
].join("\n"),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache({ sessionFiles: [sessionFile] });
|
||||
const summary = await loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-range",
|
||||
sessionFile,
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
|
||||
expect(summary.cacheStatus.status).toBe("fresh");
|
||||
expect(summary.summary?.totalTokens).toBe(20);
|
||||
expect(summary.summary?.dailyBreakdown).toEqual([
|
||||
{ date: "2026-02-05", tokens: 20, cost: 0.02 },
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
it("rebuilds missing session summaries synchronously when requested", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-session-sync");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-session-sync.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
JSON.stringify({
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 10,
|
||||
output: 20,
|
||||
totalTokens: 30,
|
||||
cost: { total: 0.03 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache();
|
||||
const summary = await loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-session-sync",
|
||||
sessionFile,
|
||||
refreshMode: "sync-when-empty",
|
||||
});
|
||||
|
||||
expect(summary.summary?.totalTokens).toBe(30);
|
||||
expect(summary.summary?.totalCost).toBeCloseTo(0.03, 5);
|
||||
expect(summary.cacheStatus.status).toBe("fresh");
|
||||
});
|
||||
});
|
||||
|
||||
it("limits session summary refreshes to requested files", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-session-requested-files");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-session-requested.jsonl");
|
||||
const otherSessionFile = path.join(sessionsDir, "sess-cache-session-other.jsonl");
|
||||
const entry = (timestamp: string, totalTokens: number) => ({
|
||||
type: "message",
|
||||
timestamp,
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: totalTokens,
|
||||
output: 0,
|
||||
totalTokens,
|
||||
cost: { total: totalTokens / 1000 },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
fs.writeFile(sessionFile, JSON.stringify(entry("2026-02-05T12:00:00.000Z", 10)), "utf-8"),
|
||||
fs.writeFile(
|
||||
otherSessionFile,
|
||||
JSON.stringify(entry("2026-02-05T12:01:00.000Z", 20)),
|
||||
"utf-8",
|
||||
),
|
||||
]);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache();
|
||||
await refreshCostUsageCache({ sessionFiles: [sessionFile] });
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const cache = JSON.parse(await fs.readFile(cachePath, "utf-8")) as {
|
||||
files: Record<string, { sessionSummary?: unknown }>;
|
||||
};
|
||||
|
||||
expect(cache.files[sessionFile]?.sessionSummary).toBeDefined();
|
||||
expect(cache.files[otherSessionFile]?.sessionSummary).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
it("respects live usage cache locks even when they are old", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-stale-lock");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-stale-lock.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
JSON.stringify({
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 5,
|
||||
output: 5,
|
||||
totalTokens: 10,
|
||||
cost: { total: 0.01 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const lockPath = `${cachePath}.lock`;
|
||||
await fs.writeFile(
|
||||
lockPath,
|
||||
`${JSON.stringify({
|
||||
pid: process.pid,
|
||||
startedAt: Date.now() - 60 * 60 * 1000,
|
||||
})}\n`,
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const result = await refreshCostUsageCache();
|
||||
expect(result).toBe("busy");
|
||||
expect(await fs.readFile(lockPath, "utf-8")).toContain(String(process.pid));
|
||||
});
|
||||
});
|
||||
|
||||
it("treats in-progress usage cache lock writes as busy", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-malformed-lock-recent");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-malformed-lock-recent.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
JSON.stringify({
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 5,
|
||||
output: 5,
|
||||
totalTokens: 10,
|
||||
cost: { total: 0.01 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const lockPath = `${cachePath}.lock`;
|
||||
await fs.writeFile(lockPath, "", "utf-8");
|
||||
|
||||
try {
|
||||
const result = await refreshCostUsageCache();
|
||||
expect(result).toBe("busy");
|
||||
expect(await fs.readFile(lockPath, "utf-8")).toBe("");
|
||||
} finally {
|
||||
await fs.rm(lockPath, { force: true });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it("expires abandoned usage cache locks before refreshing", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-abandoned-lock");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-abandoned-lock.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
JSON.stringify({
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 5,
|
||||
output: 5,
|
||||
totalTokens: 10,
|
||||
cost: { total: 0.01 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const lockPath = `${cachePath}.lock`;
|
||||
await fs.writeFile(
|
||||
lockPath,
|
||||
`${JSON.stringify({
|
||||
pid: 2_147_483_647,
|
||||
startedAt: Date.now(),
|
||||
})}\n`,
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const result = await refreshCostUsageCache();
|
||||
expect(result).toBe("refreshed");
|
||||
await waitFor(async () => {
|
||||
const warm = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
return warm.cacheStatus?.status === "fresh";
|
||||
});
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
expect(summary.totals.totalTokens).toBe(10);
|
||||
expect(summary.cacheStatus?.status).toBe("fresh");
|
||||
});
|
||||
});
|
||||
|
||||
it("reclaims old malformed usage cache locks before refreshing", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-malformed-lock-old");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-malformed-lock-old.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
JSON.stringify({
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 5,
|
||||
output: 5,
|
||||
totalTokens: 10,
|
||||
cost: { total: 0.01 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const lockPath = `${cachePath}.lock`;
|
||||
await fs.writeFile(lockPath, "{", "utf-8");
|
||||
const old = new Date(Date.now() - 60_000);
|
||||
await fs.utimes(lockPath, old, old);
|
||||
|
||||
const result = await refreshCostUsageCache();
|
||||
expect(result).toBe("refreshed");
|
||||
await waitFor(async () => {
|
||||
const warm = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
return warm.cacheStatus?.status === "fresh";
|
||||
});
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
expect(summary.totals.totalTokens).toBe(10);
|
||||
expect(summary.cacheStatus?.status).toBe("fresh");
|
||||
});
|
||||
});
|
||||
|
||||
it("batches stale session summary refreshes for the same agent", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-session-batch");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const firstSessionFile = path.join(sessionsDir, "sess-cache-batch-a.jsonl");
|
||||
const secondSessionFile = path.join(sessionsDir, "sess-cache-batch-b.jsonl");
|
||||
const entry = (timestamp: string, totalTokens: number) => ({
|
||||
type: "message",
|
||||
timestamp,
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: totalTokens,
|
||||
output: 0,
|
||||
totalTokens,
|
||||
cost: { total: totalTokens / 1000 },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
fs.writeFile(
|
||||
firstSessionFile,
|
||||
JSON.stringify(entry("2026-02-05T12:00:00.000Z", 10)),
|
||||
"utf-8",
|
||||
),
|
||||
fs.writeFile(
|
||||
secondSessionFile,
|
||||
JSON.stringify(entry("2026-02-05T12:00:00.000Z", 20)),
|
||||
"utf-8",
|
||||
),
|
||||
]);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache();
|
||||
const [firstCold, secondCold] = await Promise.all([
|
||||
loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-batch-a",
|
||||
sessionFile: firstSessionFile,
|
||||
}),
|
||||
loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-batch-b",
|
||||
sessionFile: secondSessionFile,
|
||||
}),
|
||||
]);
|
||||
|
||||
expect(firstCold.summary).toBeNull();
|
||||
expect(secondCold.summary).toBeNull();
|
||||
|
||||
await waitFor(async () => {
|
||||
const [firstWarm, secondWarm] = await Promise.all([
|
||||
loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-batch-a",
|
||||
sessionFile: firstSessionFile,
|
||||
requestRefresh: false,
|
||||
}),
|
||||
loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-batch-b",
|
||||
sessionFile: secondSessionFile,
|
||||
requestRefresh: false,
|
||||
}),
|
||||
]);
|
||||
return firstWarm.summary?.totalTokens === 10 && secondWarm.summary?.totalTokens === 20;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it("preserves full refreshes when queued with session summary refreshes", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-full-plus-session");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const firstSessionFile = path.join(sessionsDir, "sess-cache-full-plus-session-a.jsonl");
|
||||
const secondSessionFile = path.join(sessionsDir, "sess-cache-full-plus-session-b.jsonl");
|
||||
const entry = (timestamp: string, totalTokens: number) => ({
|
||||
type: "message",
|
||||
timestamp,
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: totalTokens,
|
||||
output: 0,
|
||||
totalTokens,
|
||||
cost: { total: totalTokens / 1000 },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
fs.writeFile(
|
||||
firstSessionFile,
|
||||
JSON.stringify(entry("2026-02-05T12:00:00.000Z", 10)),
|
||||
"utf-8",
|
||||
),
|
||||
fs.writeFile(
|
||||
secondSessionFile,
|
||||
JSON.stringify(entry("2026-02-05T12:01:00.000Z", 20)),
|
||||
"utf-8",
|
||||
),
|
||||
]);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
requestCostUsageCacheRefresh();
|
||||
requestCostUsageCacheRefresh({ sessionFiles: [firstSessionFile] });
|
||||
|
||||
await waitFor(async () => {
|
||||
const summary = await loadCostUsageSummaryFromCache({
|
||||
startMs: Date.UTC(2026, 1, 5),
|
||||
endMs: Date.UTC(2026, 1, 5) + 24 * 60 * 60 * 1000 - 1,
|
||||
requestRefresh: false,
|
||||
});
|
||||
const sessionSummary = await loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-full-plus-session-a",
|
||||
sessionFile: firstSessionFile,
|
||||
requestRefresh: false,
|
||||
});
|
||||
return (
|
||||
summary.cacheStatus?.status === "fresh" && sessionSummary.summary?.totalTokens === 10
|
||||
);
|
||||
});
|
||||
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const cache = JSON.parse(await fs.readFile(cachePath, "utf-8")) as {
|
||||
files: Record<string, { sessionSummary?: unknown }>;
|
||||
};
|
||||
expect(cache.files[firstSessionFile]).toBeDefined();
|
||||
expect(cache.files[secondSessionFile]).toBeDefined();
|
||||
expect(cache.files[firstSessionFile]?.sessionSummary).toBeDefined();
|
||||
expect(cache.files[secondSessionFile]?.sessionSummary).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
it("retries queued session summary refreshes when the cache lock is busy", async () => {
|
||||
const root = await makeSessionCostRoot("cost-cache-session-lock-busy");
|
||||
const sessionsDir = path.join(root, "agents", "main", "sessions");
|
||||
await fs.mkdir(sessionsDir, { recursive: true });
|
||||
const sessionFile = path.join(sessionsDir, "sess-cache-lock-busy.jsonl");
|
||||
await fs.writeFile(
|
||||
sessionFile,
|
||||
JSON.stringify({
|
||||
type: "message",
|
||||
timestamp: "2026-02-05T12:00:00.000Z",
|
||||
message: {
|
||||
role: "assistant",
|
||||
usage: {
|
||||
input: 10,
|
||||
output: 0,
|
||||
totalTokens: 10,
|
||||
cost: { total: 0.01 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
await withStateDir(root, async () => {
|
||||
await refreshCostUsageCache();
|
||||
const cachePath = path.join(sessionsDir, ".usage-cost-cache.json");
|
||||
const lockPath = `${cachePath}.lock`;
|
||||
await fs.writeFile(
|
||||
lockPath,
|
||||
`${JSON.stringify({ pid: process.pid, startedAt: Date.now() })}\n`,
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
try {
|
||||
const cold = await loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-lock-busy",
|
||||
sessionFile,
|
||||
});
|
||||
expect(cold.summary).toBeNull();
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 75));
|
||||
const stillMissing = await loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-lock-busy",
|
||||
sessionFile,
|
||||
requestRefresh: false,
|
||||
});
|
||||
expect(stillMissing.summary).toBeNull();
|
||||
} finally {
|
||||
await fs.rm(lockPath, { force: true });
|
||||
}
|
||||
|
||||
await waitFor(async () => {
|
||||
const warm = await loadSessionCostSummaryFromCache({
|
||||
sessionId: "sess-cache-lock-busy",
|
||||
sessionFile,
|
||||
requestRefresh: false,
|
||||
});
|
||||
return warm.summary?.totalTokens === 10;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it("summarizes a single session file", async () => {
|
||||
const root = await makeSessionCostRoot("cost-session");
|
||||
const sessionFile = path.join(root, "session.jsonl");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -60,8 +60,17 @@ export type CostUsageSummary = {
|
||||
days: number;
|
||||
daily: CostUsageDailyEntry[];
|
||||
totals: CostUsageTotals;
|
||||
cacheStatus?: {
|
||||
status: "fresh" | "partial" | "stale" | "refreshing";
|
||||
cachedFiles: number;
|
||||
pendingFiles: number;
|
||||
staleFiles: number;
|
||||
refreshedAt?: number;
|
||||
};
|
||||
};
|
||||
|
||||
export type UsageCacheStatus = NonNullable<CostUsageSummary["cacheStatus"]>;
|
||||
|
||||
export type SessionDailyUsage = {
|
||||
date: string; // YYYY-MM-DD
|
||||
tokens: number;
|
||||
|
||||
@@ -63,4 +63,5 @@ export type SessionsUsageResult = {
|
||||
sessions: SessionUsageEntry[];
|
||||
totals: CostUsageSummary["totals"];
|
||||
aggregates: SessionsUsageAggregates;
|
||||
cacheStatus?: CostUsageSummary["cacheStatus"];
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@ import { modelKey, normalizeModelRef, normalizeProviderId } from "../agents/mode
|
||||
import type { NormalizedUsage } from "../agents/usage.js";
|
||||
import type { ModelProviderConfig } from "../config/types.models.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { getGatewayModelPricingCacheFingerprint } from "../gateway/model-pricing-cache-state.js";
|
||||
import { getCachedGatewayModelPricing } from "../gateway/model-pricing-cache.js";
|
||||
import { normalizeOptionalString } from "../shared/string-coerce.js";
|
||||
|
||||
@@ -260,6 +261,42 @@ function findConfiguredProviderCost(params: {
|
||||
}).get(key);
|
||||
}
|
||||
|
||||
function stableCostFingerprintValue(value: unknown): string {
|
||||
if (typeof value === "number") {
|
||||
return Number.isFinite(value) ? JSON.stringify(value) : JSON.stringify(String(value));
|
||||
}
|
||||
if (value === null || typeof value !== "object") {
|
||||
return JSON.stringify(value);
|
||||
}
|
||||
if (Array.isArray(value)) {
|
||||
return `[${value.map((entry) => stableCostFingerprintValue(entry)).join(",")}]`;
|
||||
}
|
||||
const record = value as Record<string, unknown>;
|
||||
return `{${Object.keys(record)
|
||||
.filter((key) => record[key] !== undefined)
|
||||
.toSorted()
|
||||
.map((key) => `${JSON.stringify(key)}:${stableCostFingerprintValue(record[key])}`)
|
||||
.join(",")}}`;
|
||||
}
|
||||
|
||||
function serializeCostIndex(
|
||||
entries: Map<string, ModelCostConfig>,
|
||||
): Array<[string, ModelCostConfig]> {
|
||||
return Array.from(entries.entries()).toSorted(([a], [b]) => a.localeCompare(b));
|
||||
}
|
||||
|
||||
export function resolveModelCostConfigFingerprint(config?: OpenClawConfig): string {
|
||||
return stableCostFingerprintValue({
|
||||
configuredRaw: serializeCostIndex(
|
||||
buildProviderCostIndex(config?.models?.providers, { allowPluginNormalization: false }),
|
||||
),
|
||||
configuredNormalized: serializeCostIndex(buildProviderCostIndex(config?.models?.providers)),
|
||||
modelsJsonRaw: serializeCostIndex(loadModelsJsonCostIndex({ allowPluginNormalization: false })),
|
||||
modelsJsonNormalized: serializeCostIndex(loadModelsJsonCostIndex()),
|
||||
gatewayPricing: getGatewayModelPricingCacheFingerprint(),
|
||||
});
|
||||
}
|
||||
|
||||
export function resolveModelCostConfig(params: {
|
||||
provider?: string;
|
||||
model?: string;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:14:54.780Z",
|
||||
"generatedAt": "2026-05-03T18:28:38.725Z",
|
||||
"locale": "ar",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
{"cache_key":"01fabdeb073be4ac767bb469c05bd62b6d93a1874e1ef0a1fd1be7cc0a5352bb","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.requiredSr","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"required","text_hash":"d0a3630555bbec7fc05a98d311c23b00fd1ab4d8296ac4a4125976d80b6a6959","tgt_lang":"ar","translated":"مطلوب","updated_at":"2026-04-29T17:40:01.750Z"}
|
||||
{"cache_key":"0200570fbe16d6efda2f97b619dd2f65777f870d21eb8e93d5b2f0205da08b84","model":"gpt-5.5","provider":"openai","segment_id":"debug.security.critical","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"{count} critical","text_hash":"97e8a7b9fe4cf2aec17af2d2f9e452ed4adef3ec84899cba45ec4b6c5045e1ec","tgt_lang":"ar","translated":"{count} حرجة","updated_at":"2026-04-29T19:26:37.887Z"}
|
||||
{"cache_key":"02c351e1465f72a6fba669fe63edf477c436fe07fbb051ff0b77844da80bd447","model":"gpt-5.5","provider":"openai","segment_id":"agentTools.channelSource","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Channel: {id}","text_hash":"deeba4ed0001ba82ab20e37ea762c26095e52817c28b99b94e2e5026f88fee6c","tgt_lang":"ar","translated":"القناة: {id}","updated_at":"2026-04-29T17:37:24.688Z"}
|
||||
{"cache_key":"02f05f7b33f1abedc60ab205902087d6a6843f907480a02e45987682255b366b","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"ar","translated":"قديم","updated_at":"2026-05-03T18:28:38.574Z"}
|
||||
{"cache_key":"02ffaedd27107de4283bf3d1eb4bf590cc8d2f7b9384f247328123d65e2f7f8a","model":"gpt-5.5","provider":"openai","segment_id":"agents.files.editFile","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Edit file","text_hash":"9608dd142d9b10d7799422fe96eab7262a5db3de6edbb1fde660d74ddaa2617b","tgt_lang":"ar","translated":"تحرير الملف","updated_at":"2026-04-29T19:26:26.267Z"}
|
||||
{"cache_key":"03db87c65f311bfc78b3f5bd4c8d78a8e73cbcc832809ff4e40626c0d954306a","model":"gpt-5.5","provider":"openai","segment_id":"cron.runs.runStatusError","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Error","text_hash":"54a0e8c17ebb21a11f8a25b8042786ef7efe52441e6cc87e92c67e0c4c0c6e78","tgt_lang":"ar","translated":"خطأ","updated_at":"2026-04-29T17:40:01.750Z"}
|
||||
{"cache_key":"043c3311ffc4c0625ec59aa627b40a8b7a74ddc1496b1f69fbfe75a590ddf565","model":"gpt-5.5","provider":"openai","segment_id":"usage.filters.clearAll","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Clear All","text_hash":"ddceb7adfdb8816e4747bc48a2221702e830340e5596a701dc0993766eba5e60","tgt_lang":"ar","translated":"مسح الكل","updated_at":"2026-04-29T17:38:50.369Z"}
|
||||
@@ -398,6 +399,7 @@
|
||||
{"cache_key":"674fc26dd7f4d8481a8b6840d215be4cb97303c207568fc39f06ab58b0f0c008","model":"gpt-5.5","provider":"openai","segment_id":"overview.palette.items.sessions","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Sessions","text_hash":"6fa3cbf451b2a1d54159d42c3ea5ab8725b0c8620d831f8c1602676b38ab00e6","tgt_lang":"ar","translated":"الجلسات","updated_at":"2026-04-29T17:38:06.592Z"}
|
||||
{"cache_key":"675eaae890bdb418854f492e62a43746966373e10f9fe9d1f679b51611d1ea81","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.announceDefault","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Announce summary (default)","text_hash":"957972745edc1a6bff9600816b6c3e9599ca2b22f84e2aba567ced448b9f2589","tgt_lang":"ar","translated":"إعلان الملخص (افتراضي)","updated_at":"2026-04-29T17:40:21.613Z"}
|
||||
{"cache_key":"67edf3cb9fa7afbd3f3bef55f875bdfb299d33fa88e8f97a688629a9adf0090e","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.modelMix","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Model Mix","text_hash":"4716263d5596745d99dafb4d7ce95bb8afd089368f8203741451c5915005293c","tgt_lang":"ar","translated":"مزيج النماذج","updated_at":"2026-04-29T17:39:20.329Z"}
|
||||
{"cache_key":"6805cffe1b39e4d19b113e0e96749c98e548e11cef83b484d740fee63cd3bea0","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"ar","translated":"جزئي","updated_at":"2026-05-03T18:28:38.574Z"}
|
||||
{"cache_key":"680eb2140e4d3609f91964f7891742beaa183fd2eece37b1c534def928004fb8","model":"gpt-5.5","provider":"openai","segment_id":"agents.files.missingHint","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"This file is missing. Saving will create it in the agent workspace.","text_hash":"76f5e100c76d9904ada60584ca5d595980600e772931fdfeb9c5e6c85039ff22","tgt_lang":"ar","translated":"هذا الملف مفقود. سيؤدي الحفظ إلى إنشائه في مساحة عمل الوكيل.","updated_at":"2026-04-29T19:26:31.017Z"}
|
||||
{"cache_key":"6824b3054c4f31fdff5e89fd22f0cd84f76aa21d12ce0282924d5b027de4f19f","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.webhookHelp","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Send run summaries to a webhook endpoint.","text_hash":"cb5f366ea218ef2d0c803e1c814ed6cc24abd93701d5c5c87e9503869eb11070","tgt_lang":"ar","translated":"أرسل ملخصات التشغيل إلى نقطة نهاية webhook.","updated_at":"2026-04-29T17:40:21.613Z"}
|
||||
{"cache_key":"685259bef1ed11a9bbc3287b7e888396dbe7b52b307bc8fce4e2f7c0e1f42ad3","model":"gpt-5.5","provider":"openai","segment_id":"usage.filters.session","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Session","text_hash":"6959b4159575d8dd76d9f3bbe2c6437904f861e7860c35abd18deffb1c3425a0","tgt_lang":"ar","translated":"الجلسة","updated_at":"2026-04-29T17:38:50.369Z"}
|
||||
@@ -795,6 +797,7 @@
|
||||
{"cache_key":"ce8dcc72fd0fdb7cb2e210fdce64b3914ca1880dc520e2036211a3db882d2f82","model":"gpt-5.5","provider":"openai","segment_id":"cron.runs.deliveryUnknown","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Unknown","text_hash":"b764cdc0eab7137467211272fa539f1260d1bf2e71bcf6ff3bdc960f5c16aa14","tgt_lang":"ar","translated":"غير معروف","updated_at":"2026-04-29T17:40:01.750Z"}
|
||||
{"cache_key":"cee6d77fc0bc06fc5c600a77c42b4d5eb1ca7885ff4ee4f2b409f94586c94735","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.howHint","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Choose how results are delivered.","text_hash":"6c3235002460d7c6395e387dd0e3a199a8be40a0ba819a675111fb90b04f48a9","tgt_lang":"ar","translated":"اختر طريقة تسليم النتائج.","updated_at":"2026-04-29T20:14:54.627Z"}
|
||||
{"cache_key":"cef63aa38773b13d2febc948df4a5a6b49b7d4711676a41eebb92e5c7c7cdced","model":"gpt-5.5","provider":"openai","segment_id":"chat.onboardingDisabled","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Disabled during setup","text_hash":"9790a355d748c87f8c5497ffa7fd924d6b539bab8ff2a06d6f85dc7a3b4805f1","tgt_lang":"ar","translated":"معطل أثناء الإعداد","updated_at":"2026-04-29T17:39:41.587Z"}
|
||||
{"cache_key":"cef929620f089e7038f8f3d1466ef21acd49fdbf1933abb135f95e3b31f8f414","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"ar","translated":"{status}: {pending} معلّقة، {stale} قديمة، {cached} مخزّنة مؤقتًا","updated_at":"2026-05-03T18:28:38.574Z"}
|
||||
{"cache_key":"cf03cce6557ff794c71855982b4b61c4f9996d232ed8536df472dde716726728","model":"gpt-5.5","provider":"openai","segment_id":"overview.attention.title","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Attention","text_hash":"c2eb8cd9d95643145e80db9cca75e934d9ee19cb10e9e6383a8f3cb14b57a624","tgt_lang":"ar","translated":"تنبيه","updated_at":"2026-04-29T17:38:06.592Z"}
|
||||
{"cache_key":"cf43b0b6ebf8819b783f5c102783854bc70da26c5921a4435ccc5a6e8e45ab56","model":"gpt-5.5","provider":"openai","segment_id":"cron.errors.everyAmountInvalid","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Interval must be greater than 0.","text_hash":"891c3b04cad99bfb63e3cf4186f158d3b3b7273655bbf419990a75408728b85e","tgt_lang":"ar","translated":"يجب أن يكون الفاصل أكبر من 0.","updated_at":"2026-04-29T17:40:43.284Z"}
|
||||
{"cache_key":"cf497cbf5b7284549828dd54f41a42c8e99055cf6897e07510b976ac2c59bcba","model":"gpt-5.5","provider":"openai","segment_id":"usage.metrics.sessions","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"sessions","text_hash":"1225ae6c1ae69dcb4ee4781b703e12206f3b549cd3ca151070a8d8d8f371dd71","tgt_lang":"ar","translated":"جلسات","updated_at":"2026-04-29T17:38:45.816Z"}
|
||||
@@ -820,6 +823,7 @@
|
||||
{"cache_key":"d4c68a8302fcf04612921c54e301ba223147459156d711d1a1b9805b03dd94ad","model":"gpt-5.5","provider":"openai","segment_id":"overview.palette.items.debugMode","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Debug Mode","text_hash":"5f75368293f2c806ad6db16cde4b2a5329bca96422bf47a76986619f61feb73f","tgt_lang":"ar","translated":"وضع تصحيح الأخطاء","updated_at":"2026-04-29T17:38:11.460Z"}
|
||||
{"cache_key":"d4d92ad9b7ee1fa9fa964ee7f765bc9500e32d70165b29894fd8bf6180d79469","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.topTools","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Top Tools","text_hash":"ff908e711c3c21e0074b29e1f2953688ab11a463b463af18005e8900d92f1ee5","tgt_lang":"ar","translated":"أهم الأدوات","updated_at":"2026-04-29T17:39:11.160Z"}
|
||||
{"cache_key":"d58ea94e184c3efaacec0ecb762188cf8857a153b82de5dd719419123faa91a7","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.expressionPlaceholder","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"0 7 * * *","text_hash":"1d726e4af41cb9434cb588e6a94a70b43003cf17c1913febed0bb86ccaadcb2e","tgt_lang":"ar","translated":"0 7 * * *","updated_at":"2026-04-29T17:40:06.140Z"}
|
||||
{"cache_key":"d5fdbce2f79bf8c5206852baf7b08ee2a3c2f55c2b86a04773cd93934e437344","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"ar","translated":"جارٍ التحديث","updated_at":"2026-05-03T18:28:38.574Z"}
|
||||
{"cache_key":"d62804b1752892587471bcbc8967eb9e587be72ce713c0ea867f31aab9156901","model":"gpt-5.5","provider":"openai","segment_id":"cron.jobs.lastRun","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Last run","text_hash":"512a48218ba2179153629504206e7d54a7767e19ee2aa21574a7c614e5c92537","tgt_lang":"ar","translated":"آخر تشغيل","updated_at":"2026-04-29T17:39:51.444Z"}
|
||||
{"cache_key":"d65edca8eb1d16b9794544eebf76f435c30285dcd9b2951c7c9f46e1bb137447","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.advanced.description","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Review what came from the daily log, what is waiting for promotion, and what was promoted recently.","text_hash":"2e7bad7c9bd052bb3a5c0bb3c9a5f59cb202ec91db37f4f547926689ff37bf12","tgt_lang":"ar","translated":"راجع ما ورد من السجل اليومي، وما ينتظر الترقية، وما تمت ترقيته مؤخرًا.","updated_at":"2026-04-29T17:38:16.973Z"}
|
||||
{"cache_key":"d691ed910c8166480a65e81a3686d4a1547655d06d709afdbd9532268060a5bd","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.advanced.shortTermDescription","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Current short-term candidates waiting to graduate into real memory.","text_hash":"0895c842efb140d4ebcd01bd1e976ecfa7e8d7318bd70d4ff1874976ba4729b8","tgt_lang":"ar","translated":"المرشحون الحاليون قصيرو الأجل الذين ينتظرون الانتقال إلى الذاكرة الحقيقية.","updated_at":"2026-04-29T17:38:25.053Z"}
|
||||
@@ -837,6 +841,7 @@
|
||||
{"cache_key":"d928f73b1488f07296080502ca5bec8f33895715af7a2ff06de751bb43caa717","model":"gpt-5.5","provider":"openai","segment_id":"channels.nostr.displayName","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Display Name","text_hash":"18d67c992b71ce69eb924554dbace110236c7e2db06effceb3d690b8cd64a671","tgt_lang":"ar","translated":"اسم العرض","updated_at":"2026-04-29T17:37:12.959Z"}
|
||||
{"cache_key":"d93f154b35d21ef347077ef94f87f9a92236907131ea8867e5aa7e62755046fc","model":"gpt-5.5","provider":"openai","segment_id":"overview.access.togglePasswordVisibility","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Toggle password visibility","text_hash":"1016c07b0f58d365790cc799fb215afd92fde1aeb5ac47cd17260e327465b2d6","tgt_lang":"ar","translated":"تبديل ظهور كلمة المرور","updated_at":"2026-04-29T17:37:41.352Z"}
|
||||
{"cache_key":"d9520afe97d3cc354248b82c1b3d99ae8484cc4ca348ee686d4bb1d4919ce808","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.title","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Usage Overview","text_hash":"4e59a10f60e0e162e55c1c8399a7bc68792b9120c5f57b11f522afd6d0f1971e","tgt_lang":"ar","translated":"نظرة عامة على الاستخدام","updated_at":"2026-04-29T17:39:02.502Z"}
|
||||
{"cache_key":"d98260c72f3da799b662c33554ded6b35825b991a817e62b7a5c81225ed69792","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"ar","translated":"تجري إعادة بناء ذاكرة الاستخدام المؤقتة في الخلفية. قد تكون الإجماليات المعروضة قديمة.","updated_at":"2026-05-03T18:28:38.574Z"}
|
||||
{"cache_key":"da0fb1b787ce60487a2a709033f87ca12d294a23e83c12b8bc6053a4a69a9fce","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.cacheHint","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Cache hit rate = cache read / (input + cache read + cache write). Higher is better.","text_hash":"f27052f7e631b9a9897b95074717bca434b3de90e0e469526cfab6695e6ef339","tgt_lang":"ar","translated":"معدل إصابة ذاكرة التخزين المؤقت = قراءة ذاكرة التخزين المؤقت / (الإدخال + قراءة ذاكرة التخزين المؤقت + كتابة ذاكرة التخزين المؤقت). الأعلى أفضل.","updated_at":"2026-04-29T17:39:11.159Z"}
|
||||
{"cache_key":"da67ff71fb93e5e5e5f7d3b10c73fb3e2bad38fcb26f7cc9252f4821987db8aa","model":"gpt-5.5","provider":"openai","segment_id":"channels.nostr.nip05Help","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Verifiable identifier (e.g., you@domain.com)","text_hash":"621809d0907c8a18fa79d4d21f7d41bed3ddccb2a2dd5cd134957ef4e7b3f0f3","tgt_lang":"ar","translated":"معرّف قابل للتحقق (مثال: you@domain.com)","updated_at":"2026-04-29T17:37:18.843Z"}
|
||||
{"cache_key":"da87fa2b8efd7e4ccd85e88f0beedcc84e7a193f291a14aef08baf8fa2b66f08","model":"gpt-5.5","provider":"openai","segment_id":"agents.noAgents","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"No agents","text_hash":"4c47f095edec7512afafcb774924c4cae2148f41547073dd1669ece70d2790f7","tgt_lang":"ar","translated":"لا توجد وكلاء","updated_at":"2026-04-29T19:26:14.154Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:12:27.794Z",
|
||||
"generatedAt": "2026-05-03T18:28:22.358Z",
|
||||
"locale": "de",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -201,6 +201,7 @@
|
||||
{"cache_key":"3fa65cc8e6d842876e798500e33fdbebede6f232c4245e6b49feb421efe43eae","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.fillRequired","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Fill the required fields below to enable submit.","text_hash":"d11119bbb0930624a8967cf51effd219f1ce09dd9263ddd22c892687ce771b04","tgt_lang":"de","translated":"Fülle die erforderlichen Felder unten aus, um das Absenden zu aktivieren.","updated_at":"2026-04-05T17:12:56.913Z"}
|
||||
{"cache_key":"3fb4d48dbe33b63608cf643d7f0387bca76e77384aa6e11794ea87b49b9c13ab","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.addJob","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Add job","text_hash":"30984d76f83a02109b01e7d7b2fabb4695ddadf3cdfc5c5b79a3d596b8fbb2ba","tgt_lang":"de","translated":"Job hinzufügen","updated_at":"2026-04-05T17:12:56.913Z"}
|
||||
{"cache_key":"3fcb1ea29a3b7f6ac5d7dc30ab07d63451bdd9f5e9c1b7ce195b2e8dc5540818","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.title","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Usage Overview","text_hash":"4e59a10f60e0e162e55c1c8399a7bc68792b9120c5f57b11f522afd6d0f1971e","tgt_lang":"de","translated":"Nutzungsübersicht","updated_at":"2026-04-05T17:11:38.725Z"}
|
||||
{"cache_key":"407e0d7b54686fb95fa71dfcb461a23b2e1f793e3159037388a5428080294a50","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"de","translated":"teilweise","updated_at":"2026-05-03T18:28:22.207Z"}
|
||||
{"cache_key":"4097935b494c15f68dde67aa7dcacff386684db76a33e2d9d29df19af4bf8cb6","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.resultDelivery","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Result delivery","text_hash":"5c3dc0d7b06d54b07b7e063a8cc675baf44327d6bcdbfac874c94700afbc887b","tgt_lang":"de","translated":"Ergebniszustellung","updated_at":"2026-04-05T17:12:48.484Z"}
|
||||
{"cache_key":"40e970be6d028510c0449315aef9f5d4abf7700cdafcbd736f76e3a6d949f583","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.noneInternal","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"None (internal)","text_hash":"f6820177591201d55e4b4c69520b46b4877c998d9ab3861bf0020a680c449397","tgt_lang":"de","translated":"Keine (intern)","updated_at":"2026-04-05T17:12:48.484Z"}
|
||||
{"cache_key":"41c9f6fca07055b70fcfac3f25bea315e9b60b6f6c71635c86ba8388bbb63b6c","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.promotedDescription","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Items that already made it through promotion recently.","text_hash":"634f023132df2a70efefea851c0427d8827b34e7679253ab53700eb2cbb3058e","tgt_lang":"de","translated":"Einträge, die die Übernahme vor Kurzem bereits durchlaufen haben.","updated_at":"2026-04-10T07:51:49.456Z"}
|
||||
@@ -328,6 +329,7 @@
|
||||
{"cache_key":"6d8205b7303e018d9040f3f0a6f46ab0ee83da4fc9fee08232efdcb771f8f4a0","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.schedules.once.label","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Run once","text_hash":"5f041f4be2d3becdcb1363508b415794005ddbcfae08c4d6d5a29d615ea73922","tgt_lang":"de","translated":"Einmal ausführen","updated_at":"2026-04-29T20:12:23.202Z"}
|
||||
{"cache_key":"6db743a22d700ba7c5ae4ab0bac09756832c349b7b02d94ffe1ecbc7006782fe","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.selectAllOnPage","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Select all on page","text_hash":"f47f99dde01bd07bd800879220c76522d006ac17a7fdd02ac92191f72b419a7f","tgt_lang":"de","translated":"Alle auf der Seite auswählen","updated_at":"2026-04-29T20:12:10.034Z"}
|
||||
{"cache_key":"6df26bcb562402441d3880ef43005dec2397c6769ce989a5ffb1fdda9cbbf3f5","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.agent","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Agent","text_hash":"11b39c93777e8f1f3983bdba7c72b22fe68cfea20c677e9de53e17cb7dbfb19f","tgt_lang":"de","translated":"Agent","updated_at":"2026-04-06T02:59:29.625Z"}
|
||||
{"cache_key":"6df5800b182d9149fa30225f9031a1b7c4b0692b1143035b33fc1bcf37090ee9","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"de","translated":"Der Nutzungscache wird im Hintergrund neu aufgebaut. Angezeigte Summen können veraltet sein.","updated_at":"2026-05-03T18:28:22.207Z"}
|
||||
{"cache_key":"6e10da129829d6dcade2137d8c5c3df95c4e32712d0865d4c8124a33db91a901","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobs.loadMore","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Load more jobs","text_hash":"d9abcbfc29224d885b77becd9d55da36280d989aab480878f1a4a461f343dc55","tgt_lang":"de","translated":"Weitere Jobs laden","updated_at":"2026-04-05T17:12:08.880Z"}
|
||||
{"cache_key":"6e908032c5845a7de367d2a6b5310f3e13cfee77ed1c2d76df5d25cd9510ba9a","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.originLive","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"live","text_hash":"247610f4dedd4ab7247d07dbda19c81ca9817f85820742cad49d407ffae9e4ed","tgt_lang":"de","translated":"live","updated_at":"2026-04-10T07:58:45.047Z"}
|
||||
{"cache_key":"6e943ed00fc1ef856589b486a91048a791b4b7766883234520bb8e6acc713ede","model":"gpt-5.4","provider":"openai","segment_id":"overview.pairing.scopeUpgradeSummary","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"This device is already paired, but the requested wider scope is waiting for approval.","text_hash":"6c5bbe5182760663fe6a6ce97c13c2f407e240fb42e028abc283716b6a0f2499","tgt_lang":"de","translated":"Dieses Gerät ist bereits gekoppelt, aber der angeforderte erweiterte Umfang wartet auf Genehmigung.","updated_at":"2026-04-20T08:08:47.095Z"}
|
||||
@@ -524,6 +526,7 @@
|
||||
{"cache_key":"aa1b5d0d612f8f97ddf75229a06611e0b7622f9547db0c6caf20d9a31c79ccaf","model":"gpt-5.4","provider":"openai","segment_id":"usage.query.matching","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"{shown} of {total} sessions match","text_hash":"083883e7e8242df6bfca399e168ab9e7f86e05b26fd26f59fc8e2f98366a5d06","tgt_lang":"de","translated":"{shown} von {total} Sitzungen stimmen überein","updated_at":"2026-04-05T17:11:35.181Z"}
|
||||
{"cache_key":"aa5adc523bdcdf9476ce0752c681dce128ce4ebc5c3b0636e2a4620615d83f68","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.deliverySection","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Delivery","text_hash":"52bfe584a5fc450539e2aa651b990fa2415060492a243816ab2994292089c6fd","tgt_lang":"de","translated":"Zustellung","updated_at":"2026-04-05T17:12:48.484Z"}
|
||||
{"cache_key":"aa78cab40019342e8e0ab4571031402e186b439bfdf5e3cb20dc1439402fc142","model":"gpt-5.4","provider":"openai","segment_id":"common.loadApprovals","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Load approvals","text_hash":"854a446fcdfbfd05db219ccfe9d13527f151c87ba40591c6e7512baca4008045","tgt_lang":"de","translated":"Freigaben laden","updated_at":"2026-04-06T02:47:27.429Z"}
|
||||
{"cache_key":"aa8651733a21afaf31d6906a478752097aed6f824eaf8ad76a7b95b06839d46c","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"de","translated":"veraltet","updated_at":"2026-05-03T18:28:22.207Z"}
|
||||
{"cache_key":"aafd4193642c734805c8da4fdbba26b78674443684ac896b7a300cba2a97235f","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.cancel","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Cancel","text_hash":"19766ed6ccb2f4a32778eed80d1928d2c87a18d7c275ccb163ec6709d3eb2e27","tgt_lang":"de","translated":"Abbrechen","updated_at":"2026-04-05T17:12:56.913Z"}
|
||||
{"cache_key":"ab348fd43662d819a7d9cda8e4c504eb803b3ca96c7fd79e426687513e03f5d7","model":"gpt-5.4","provider":"openai","segment_id":"login.togglePasswordVisibility","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Toggle password visibility","text_hash":"1016c07b0f58d365790cc799fb215afd92fde1aeb5ac47cd17260e327465b2d6","tgt_lang":"de","translated":"Sichtbarkeit des Passworts umschalten","updated_at":"2026-04-20T06:29:53.130Z"}
|
||||
{"cache_key":"ab632157195cf3c0dd284a1dd24fb0d49eaae71a4394fc41b6b250a7c279397e","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.eightAm","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"8am","text_hash":"e30c8b1920cbd73bb28b87bc0292e424df7a26513eb87b2ca9a8bca7f9a6b2ee","tgt_lang":"de","translated":"8 Uhr","updated_at":"2026-04-05T17:12:02.895Z"}
|
||||
@@ -588,6 +591,7 @@
|
||||
{"cache_key":"c16aaa217796b15563edff94f52ef3aa8146d7b3cda147b6f206a44dcd0f1ca7","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.at","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"At","text_hash":"c72c5404cfcb01c1780bcb362c18d37e90af3a33888dad0c1c13e53819ef885f","tgt_lang":"de","translated":"Um","updated_at":"2026-04-05T17:12:39.118Z"}
|
||||
{"cache_key":"c1a964e9defd9af5165f638a515897e6841298824e897f3e11f04b746b81ab16","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.selected","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Selected ({count})","text_hash":"725bb02e74b1685dff7819ba5bea6f0116c69746d301c3c464fda57204c3124d","tgt_lang":"de","translated":"Ausgewählt ({count})","updated_at":"2026-04-05T17:11:50.327Z"}
|
||||
{"cache_key":"c27b2cd9883aa4e64e126454605d6555e4f6f8e137ed0c0365fcc793768732dd","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.all","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"All","text_hash":"a52ace420f2175d08b1577a1bea5445e36801229c074ef9ed6c55a73401fd9c2","tgt_lang":"de","translated":"Alle","updated_at":"2026-04-05T17:11:30.927Z"}
|
||||
{"cache_key":"c27e0a7fc788ed6183c73880dce3915f50ad22aea81a3f607fa64f49865aea4f","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"de","translated":"{status}: {pending} ausstehend, {stale} veraltet, {cached} zwischengespeichert","updated_at":"2026-05-03T18:28:22.207Z"}
|
||||
{"cache_key":"c328ca24c707962d796b4b24560b3beb335386eb64b0d7116100a531d266926e","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.on","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"on","text_hash":"b8d31e852725afb1e26d53bab6095b2bff1749c9275be13ed1c05a56ed31ec09","tgt_lang":"de","translated":"Ein","updated_at":"2026-04-29T20:12:15.531Z"}
|
||||
{"cache_key":"c354363b537775dae2accdec2eee2e68b664159cfadbaca7ccafabdd4dcbd305","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.runStatusUnknown","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Unknown","text_hash":"b764cdc0eab7137467211272fa539f1260d1bf2e71bcf6ff3bdc960f5c16aa14","tgt_lang":"de","translated":"Unbekannt","updated_at":"2026-04-05T17:12:35.650Z"}
|
||||
{"cache_key":"c35a36035caf18efa4ea13053a7f7b80c1e95e6060d07b432a067cd4dc9e7b6d","model":"gpt-5.4","provider":"openai","segment_id":"login.showPassword","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Show password","text_hash":"6aeaa6a53d09dcad071fdda6280b1e7c42aa164cd0514304ff162e7da440ffaa","tgt_lang":"de","translated":"Passwort anzeigen","updated_at":"2026-04-20T06:29:53.130Z"}
|
||||
@@ -695,6 +699,7 @@
|
||||
{"cache_key":"eaafb3248875efee01e9521e39a043d047f099d77f261f43d16e200961477e80","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.baseContextPerMessage","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Base context per message","text_hash":"f97ff4c2483a2174935304524775bc8191237e0bd314d05470c8b1f30ce435b6","tgt_lang":"de","translated":"Basiskontext pro Nachricht","updated_at":"2026-04-05T17:11:54.103Z"}
|
||||
{"cache_key":"eafa95d4eb13bfebebdd30219dec5852f9a64cd1e179aeacd45f498729d54087","model":"gpt-5.4","provider":"openai","segment_id":"channels.health.noSnapshotYet","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"No snapshot yet.","text_hash":"3b578b0bf270913e649934e72f7ef6584ed56b1e10dc563b541384ff660bbfbc","tgt_lang":"de","translated":"Noch keine Aufnahme.","updated_at":"2026-04-06T02:47:31.228Z"}
|
||||
{"cache_key":"eb06d29e9d56024c7ee5eac6da3da4e1af8f4f0f511bcfd7324ef39f3a24485c","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.runStatusSkipped","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Skipped","text_hash":"12698ce1ea5cd4ab13ff4b7e6b1239908c41a4b2dfa0c2661cfb53fc2aa71bd0","tgt_lang":"de","translated":"Übersprungen","updated_at":"2026-04-05T17:12:35.650Z"}
|
||||
{"cache_key":"eb925da6c5e85b928561181baf71ebb8a4481e9605eef37d8b3f333b78f13964","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"de","translated":"wird aktualisiert","updated_at":"2026-05-03T18:28:22.207Z"}
|
||||
{"cache_key":"ebeb71a148aa1d61dd018291dec2339ce0bb55acff9979e62ef1bf1845b9a267","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.emptyShortTerm","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"No short-term entries to inspect.","text_hash":"2da0eeafc31b59fa5ff2c473c82b4d2589378ff500e4e06d5daad8ce3988a6e9","tgt_lang":"de","translated":"Keine kurzfristigen Einträge zur Prüfung.","updated_at":"2026-04-10T07:58:50.540Z"}
|
||||
{"cache_key":"ec3e25251441a5053539556094c41c2fc642cd8c22338182ebe8e69df45023b2","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.recentShort","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Recent","text_hash":"690dbe9dc0993c4256683738fc3fd541cfa96f60d299be33343615dd58179d93","tgt_lang":"de","translated":"Kürzlich","updated_at":"2026-04-05T17:11:50.327Z"}
|
||||
{"cache_key":"eca10a8dee064961670bdb4ef6c6f56058fb650e3746856147ae885d08cb854c","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.schedules.everyEvening.description","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Daily at 6:00 PM","text_hash":"260b9ed9fe7fac30932e89488f121facfb1cd04b8ecda5ca2ece9a207ad6662a","tgt_lang":"de","translated":"Täglich um 18:00 Uhr","updated_at":"2026-04-29T20:12:23.202Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:13:37.259Z",
|
||||
"generatedAt": "2026-05-03T18:28:25.316Z",
|
||||
"locale": "es",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
{"cache_key":"308ac85d7256c86a0b4c424e43d9d5210e49ab5fa741cbb4178e1eb88b704a9c","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.recentShort","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Recent","text_hash":"690dbe9dc0993c4256683738fc3fd541cfa96f60d299be33343615dd58179d93","tgt_lang":"es","translated":"Recientes","updated_at":"2026-04-05T17:12:30.161Z"}
|
||||
{"cache_key":"312be9845894d846858758adc1fd90ecf04750b9af47d3bf262f7050e23dfffe","model":"gpt-5.4","provider":"openai","segment_id":"common.waitForScan","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Wait for scan","text_hash":"bd99a64030bbae315da9bba62c2ea6493386708c738d3b9ab0cb815e9be6c748","tgt_lang":"es","translated":"Esperar escaneo","updated_at":"2026-04-06T02:48:51.667Z"}
|
||||
{"cache_key":"31395557ccd066069237831173c6e0573e33e502fb81bec63ccfaa4a02df583e","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.steps.how","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"How","text_hash":"7470bd3bc2abfe497af32ee4ccf845cb2aba14878d55c970d38d99629ab5d6a3","tgt_lang":"es","translated":"Cómo","updated_at":"2026-04-29T20:13:37.107Z"}
|
||||
{"cache_key":"31b2d7cf002a8ba3c9a01656e2067f3962985eb2bd93eb219e29781d5fa2febe","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"es","translated":"{status}: {pending} pendientes, {stale} desactualizados, {cached} en caché","updated_at":"2026-05-03T18:28:25.165Z"}
|
||||
{"cache_key":"32f1084545d3b226c5a855374071bd3ce5e3e07c73e498b2b3a3c95b71be3c5b","model":"gpt-5.5","provider":"openai","segment_id":"chat.updateAvailable","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Update available:","text_hash":"45a520c33383a467930d2e84d8d524a630ecaadf2f418b14aee5060ba1d9edd0","tgt_lang":"es","translated":"Actualización disponible:","updated_at":"2026-04-29T20:13:33.610Z"}
|
||||
{"cache_key":"331b276b4901ff891f52328c97f488fa009cd796ef54a47d7df06d5ed7a94480","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.header.on","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Dreaming On","text_hash":"061ed023b8699af1bcd0fdd2542b6327093052411dc5fb89c81fdc61e0ae6191","tgt_lang":"es","translated":"Sueño activado","updated_at":"2026-04-06T02:49:01.854Z"}
|
||||
{"cache_key":"33660cf9b6f393d49062ba121ab0a8f70da2af7554b9f18e1732ed9abb68958e","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.avgCost","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Avg Cost / Msg","text_hash":"3f7ab301fda8d9c6379d4b8f9519c9037507dfd50e86c33c3af34526d5d3b436","tgt_lang":"es","translated":"Costo prom. / mensaje","updated_at":"2026-04-05T17:12:25.752Z"}
|
||||
@@ -202,6 +203,7 @@
|
||||
{"cache_key":"589f2b8fb066c74809c0408f5878d044d5ada05d8491d8731f270d23d544949d","model":"gpt-5.4","provider":"openai","segment_id":"usage.daily.title","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Daily Usage","text_hash":"a3a4cc0143e0ce6222f374efe62c1f8cb4170bec1faea1e0ab3049080a5a4508","tgt_lang":"es","translated":"Uso diario","updated_at":"2026-04-05T17:12:17.081Z"}
|
||||
{"cache_key":"58f2cfb45d5ff7a65d07fdee1ec13593a967c0ea36db0ee1403bdbc163503980","model":"gpt-5.4","provider":"openai","segment_id":"usage.metrics.sessions","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"sessions","text_hash":"1225ae6c1ae69dcb4ee4781b703e12206f3b549cd3ca151070a8d8d8f371dd71","tgt_lang":"es","translated":"sesiones","updated_at":"2026-04-05T17:12:08.306Z"}
|
||||
{"cache_key":"5942bc410dbdc3c65d42a696f7a18c61e8eeb70b2a45b0445e56a852c2be5f3f","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.copyName","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Copy session name","text_hash":"30a6a5c11915b5b6a99698ebe1cee13b7b84adcc45ccd0a827decce17ce45a2d","tgt_lang":"es","translated":"Copiar nombre de la sesión","updated_at":"2026-04-05T17:12:34.011Z"}
|
||||
{"cache_key":"59ff083d4487b44ebd8f6e8601173e154fa43fe959eeb4f2f3178b85c99641a8","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"es","translated":"actualizando","updated_at":"2026-05-03T18:28:25.165Z"}
|
||||
{"cache_key":"5a2617c533954f8cc6afff39ee865fddf40ea8ca952477ea1e942ea1e32d629d","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.step4","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Or generate a reusable token:","text_hash":"e9512b115cf5e0471b6c45328a8c304ae1a1b5541c3bd9bd26f3c7d2dcbed14b","tgt_lang":"es","translated":"O genera un token reutilizable:","updated_at":"2026-04-05T17:12:04.947Z"}
|
||||
{"cache_key":"5a8af6439e94aede61a6de1fb1c824be979498887966aa61f1d2490a7335d8d1","model":"gpt-5.4","provider":"openai","segment_id":"common.active","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Active","text_hash":"92340695899bd2d86223e4a007620e0d6502fc0e08809773634c7e0743764a9c","tgt_lang":"es","translated":"Activo","updated_at":"2026-04-06T02:48:45.038Z"}
|
||||
{"cache_key":"5ad307e83d6ea58fcf58b397449ab63f16d063bb1e3cc336d46f7d758c11a7ed","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.noUsageData","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"No usage data for this session.","text_hash":"0d7e8a36956a3962062b10bbb0b251514111f2bdc4ec943693f48f768043c6ca","tgt_lang":"es","translated":"No hay datos de uso para esta sesión.","updated_at":"2026-04-05T17:12:34.011Z"}
|
||||
@@ -236,6 +238,7 @@
|
||||
{"cache_key":"678d583579e326277ee9f5712128b3264adf84f6887406fdff780b4bd7431de8","model":"gpt-5.4","provider":"openai","segment_id":"languages.ko","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"한국어 (Korean)","text_hash":"30f959f34501d524b06cf98b3711cdffea10a6479a316cf2c030362e8d274740","tgt_lang":"es","translated":"한국어 (coreano)","updated_at":"2026-04-05T17:12:58.558Z"}
|
||||
{"cache_key":"68289f7ae1f5004e11d53a6319dfee013941ecb69a405e236231d83195988f7d","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.errorHint","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Error rate = errors / total messages. Lower is better.","text_hash":"4626170f699e5b41fb2a4044fc94204ca8b706a9878382c9d57d97fbb7f8b1f9","tgt_lang":"es","translated":"Tasa de errores = errores / mensajes totales. Cuanto más baja, mejor.","updated_at":"2026-04-05T17:12:25.752Z"}
|
||||
{"cache_key":"68ad305de6bccb73f2fdc5affbc536e9728244f7fabc0bccf92aeb9ba7de853c","model":"gpt-5.4","provider":"openai","segment_id":"overview.cards.modelAuth","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Model Auth","text_hash":"15e5d3b038456d28fe3c7255935a490892a1517c8d316170e5776009bc9dc9bd","tgt_lang":"es","translated":"Autenticación del modelo","updated_at":"2026-04-15T05:43:59.144Z"}
|
||||
{"cache_key":"691b37757cc4534f24df7fa1c123b3adc11d5b7501b62e785db4f0020d231ade","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"es","translated":"parcial","updated_at":"2026-05-03T18:28:25.165Z"}
|
||||
{"cache_key":"69823ecf2abd0d42ee20671ac29523beaafffd5d9747c338ed9ed82fc11c7dc3","model":"gpt-5.4","provider":"openai","segment_id":"usage.empty.subtitle","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.","text_hash":"ca71e79b3867fcfedecce345bf3266c962cb627906ba83e102a44ddab8fa97dc","tgt_lang":"es","translated":"Carga datos de uso para comparar costos, inspeccionar sesiones y explorar cronologías sin salir del panel.","updated_at":"2026-04-05T17:12:17.081Z"}
|
||||
{"cache_key":"6a6b387f30455fe7d9b7bce8779007a1a17bf3b999b74214261cd6fc8943a125","model":"gpt-5.4","provider":"openai","segment_id":"overview.pairing.scopeUpgradeTitle","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Scope upgrade pending approval.","text_hash":"01f51310417022d876b39bac2b047896b7a52e4be59e9ea7ce5416ae0c9010b3","tgt_lang":"es","translated":"Ampliación del alcance pendiente de aprobación.","updated_at":"2026-04-20T08:09:57.062Z"}
|
||||
{"cache_key":"6ad0039e4f2143c9dfce19c655c7103e0b3eccbff1f1821a0a9173536defb81c","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.username","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Username","text_hash":"e3b89e9d33f88e523083d8b4436adcc3726c89e97fd3179a2e102d765d1b16ed","tgt_lang":"es","translated":"Nombre de usuario","updated_at":"2026-04-06T02:48:55.352Z"}
|
||||
@@ -396,10 +399,12 @@
|
||||
{"cache_key":"b347a7a88e09b05e2e13e55d0bdc5322e963ffc2bff56941977d47472efd4344","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.staggerPlaceholder","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"30","text_hash":"624b60c58c9d8bfb6ff1886c2fd605d2adeb6ea4da576068201b6c6958ce93f4","tgt_lang":"es","translated":"30","updated_at":"2026-04-06T02:59:36.883Z"}
|
||||
{"cache_key":"b3561a71836fb960c43514bacdddc29ac5c9e4e099e475e6df64dd38702ad585","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.summaryWaiting","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"waiting","text_hash":"80cfa3e7f28dde4df64436b652230aff28d7779116d1369c21ef2bbf37261d71","tgt_lang":"es","translated":"en espera","updated_at":"2026-04-10T07:58:54.893Z"}
|
||||
{"cache_key":"b3b70386d42864c4ae4ed08918c698b136bb251af9a96d7910a1295de16d959a","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.avgTokens","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Avg Tokens / Msg","text_hash":"1f05d402adffc61f856e1a7635fe233c07b897448cae656802b70f7b3c521c88","tgt_lang":"es","translated":"Prom. de tokens / mensaje","updated_at":"2026-04-05T17:12:20.995Z"}
|
||||
{"cache_key":"b3e8f3837046c0dfef577cea32ec03baf559ca74dddfc63ee1fc32cd223da0ca","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"es","translated":"La caché de uso se está reconstruyendo en segundo plano. Los totales mostrados pueden estar desactualizados.","updated_at":"2026-05-03T18:28:25.165Z"}
|
||||
{"cache_key":"b3ee490bf4604b973928e895dc8951d5ca9e79cd82748ecf956b442d82bb5fe7","model":"gpt-5.4","provider":"openai","segment_id":"overview.cards.modelAuthExpiring","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"{count} expiring","text_hash":"298971eb0ed2f10fc60cc7fbb1a4e8e011952584f223d6edfc3df6b0f4136df5","tgt_lang":"es","translated":"{count} por caducar","updated_at":"2026-04-15T05:43:59.144Z"}
|
||||
{"cache_key":"b405ac363fee56318987f0f965cd5dbf9deaf4585eae48fc3e6799ada5c3160e","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.manual","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"manual","text_hash":"36bde66f289a35683683b041c6d8f418a5f36607b547da25d00ad55891e80b88","tgt_lang":"es","translated":"manual","updated_at":"2026-04-29T20:13:29.857Z"}
|
||||
{"cache_key":"b4af8a31f6b7e126d00e7b82f539d5e5f4486e1c974952d8913f41759d1cb638","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.bio","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Bio","text_hash":"3933b1802161254f41c59f2909f61ac994c086e1cde03848c4c310f45b5b4999","tgt_lang":"es","translated":"Biografía","updated_at":"2026-04-06T02:48:55.352Z"}
|
||||
{"cache_key":"b56cc42af21aae36817f49e7edea941647d4e4dc3465bff832a5a4fac48b85cd","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.sessionsHint","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Distinct sessions in the range.","text_hash":"03ac814eb939f3f67105d4862c3c3b47a36dc5906b2fa1fbf50c8e2ff2ec1255","tgt_lang":"es","translated":"Sesiones distintas dentro del rango.","updated_at":"2026-04-05T17:12:25.752Z"}
|
||||
{"cache_key":"b68c1deb91e45444f7f686608bb3e558d0a40417001479c3149a0fd14185ece0","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"es","translated":"desactualizada","updated_at":"2026-05-03T18:28:25.165Z"}
|
||||
{"cache_key":"b7271c7411ba6d5ba232b4036970f807745399835bde9e6eb9d66dd5950e8e16","model":"gpt-5.5","provider":"openai","segment_id":"lazyView.retry","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Retry","text_hash":"942087cc2d41e01304b7195558d093d10c72af8e838c7556d6a02d471ee71852","tgt_lang":"es","translated":"Reintentar","updated_at":"2026-04-27T12:11:40.158Z"}
|
||||
{"cache_key":"b7271f9314ca0095aa109a8e584c3ba209505a23f414311870925a91c1cdcd82","model":"gpt-5.4","provider":"openai","segment_id":"overview.cards.modelAuthAttentionExpiredTitle","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Model auth expired","text_hash":"0c37d888df561b1ff2a86a41b7297f5935431ea0c56d3c983942912387e496ad","tgt_lang":"es","translated":"La autenticación del modelo ha caducado","updated_at":"2026-04-15T05:43:59.144Z"}
|
||||
{"cache_key":"b72c96b5919ac2a4d41d753ed35346902dcaf6f7e603ebea3ca81d690c440383","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.tokensReadFromCache","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Tokens read from cache","text_hash":"dbfccd55c087362b7f98cea7a4b39eda9cf727df94f1cb4cd4fec24f6cc9251a","tgt_lang":"es","translated":"Tokens leídos de caché","updated_at":"2026-04-05T17:12:37.912Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:17:43.425Z",
|
||||
"generatedAt": "2026-05-03T18:29:08.558Z",
|
||||
"locale": "fa",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
{"cache_key":"0c0893df0e3971f2fbd4de832914d75836528518359fb36d3b3e600acd7dfa82","model":"gpt-5.5","provider":"openai","segment_id":"overview.connection.insecureHttpDocsTitle","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Insecure HTTP docs (opens in new tab)","text_hash":"10642206faa50df2cdcf2852e455c9bf65abd99845a755e832ee5fd1394a2087","tgt_lang":"fa","translated":"مستندات HTTP ناامن (در زبانه جدید باز میشود)","updated_at":"2026-04-29T17:42:27.724Z"}
|
||||
{"cache_key":"0c278aa1c235e1c6dbc0e9ded5ddca57be1ef7e3226a0f202148479c954142f2","model":"gpt-5.5","provider":"openai","segment_id":"overview.stats.instancesHint","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Presence beacons in the last 5 minutes.","text_hash":"72eb6f03b1eeea63f50ef39b6322727f749a6e49eadbdd343d1e235620cbd814","tgt_lang":"fa","translated":"چراغهای حضور در ۵ دقیقه گذشته.","updated_at":"2026-04-29T17:42:07.625Z"}
|
||||
{"cache_key":"0c57a5748c369300cee3847996748306b9dbabf53583b016507978f75e990a40","model":"gpt-5.5","provider":"openai","segment_id":"debug.snapshotsSubtitle","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Status, health, and heartbeat data.","text_hash":"80c44e86939b84060eed0e92d108b453558de0459dfcdbdd6f682ec6fa5e038d","tgt_lang":"fa","translated":"دادههای وضعیت، سلامت و ضربان.","updated_at":"2026-04-29T19:28:57.124Z"}
|
||||
{"cache_key":"0c6751e21fb2a578010b3bb772de0a4fdc586457513a892dfc0ccb560cfb4b4e","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"fa","translated":"کشِ استفاده در پسزمینه در حال بازسازی است. مجموعهای نمایشدادهشده ممکن است قدیمی باشند.","updated_at":"2026-05-03T18:29:08.407Z"}
|
||||
{"cache_key":"0c9747c634939aab785c1df9c7b441e02f54df047f9da8ce809eafbcce4c6424","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.channelHelp","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Choose which connected channel receives the summary.","text_hash":"65cb19d00d3ec2d597fac1e50da8d7926ca53a992b154d8e6b39aeacb632d1e4","tgt_lang":"fa","translated":"انتخاب کنید کدام کانال متصل خلاصه را دریافت کند.","updated_at":"2026-04-29T17:45:23.498Z"}
|
||||
{"cache_key":"0cb2fac70176277c43be92154ed56216a04e7a6ca9b94a4e2c4716b13273b9ff","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.tool","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Tool","text_hash":"2e53bdcd0740867b597599e733c04a994f55fb17c89a61595183a001742e5705","tgt_lang":"fa","translated":"ابزار","updated_at":"2026-04-29T17:44:16.613Z"}
|
||||
{"cache_key":"0cff8e9bf12967edf0a1b86523c53001f4ac4fd41b660ddca5ad44e953a28ca0","model":"gpt-5.5","provider":"openai","segment_id":"overview.palette.categories.navigation","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Navigation","text_hash":"3db65f8c2a7d1861b4bca37da3adec5aa7905931eb6faddbc595a35f75e6ca40","tgt_lang":"fa","translated":"پیمایش","updated_at":"2026-04-29T17:42:33.162Z"}
|
||||
@@ -107,6 +108,7 @@
|
||||
{"cache_key":"1becbe40a6dd0a2f1ee8af823db572a56bc9b5f4af9a3964dc855516ceffb366","model":"gpt-5.5","provider":"openai","segment_id":"languages.uk","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Українська (Ukrainian)","text_hash":"615798b01a143e21d6033027f3feffc84a66ccb0646fafaabef3c922c43ce59c","tgt_lang":"fa","translated":"Українська (اوکراینی)","updated_at":"2026-04-29T17:44:38.057Z"}
|
||||
{"cache_key":"1bedc23b73710ec650393904da33245874a39031c687a44ee64542bfb60d5469","model":"gpt-5.5","provider":"openai","segment_id":"cron.errors.invalidIntervalAmount","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Invalid interval amount.","text_hash":"00547e12dda54278adb10d27e4d77113926832b609b0d0220c4614a4a223d636","tgt_lang":"fa","translated":"مقدار فاصله نامعتبر است.","updated_at":"2026-04-29T17:45:52.940Z"}
|
||||
{"cache_key":"1c382c7874377d273451ac373e4edc1a711d06ec6db95f8231addaf8bffea4d5","model":"gpt-5.5","provider":"openai","segment_id":"execApproval.allowOnce","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Allow once","text_hash":"168511d24d9ee03122b3200f929be11eaaedad45cb0ecb20a95f549b3e3f4d0f","tgt_lang":"fa","translated":"یکبار مجاز کن","updated_at":"2026-04-29T19:29:06.123Z"}
|
||||
{"cache_key":"1c628ef80df64d15ddd6a423744c8800bf47933a5e1c4d63a992c4babdeb2274","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"fa","translated":"قدیمی","updated_at":"2026-05-03T18:29:08.407Z"}
|
||||
{"cache_key":"1c874700fe9b6e94225d4cd09f6e4bc084fa1cf71aa0096936fc313c517c8378","model":"gpt-5.5","provider":"openai","segment_id":"agents.channels.configuredCount","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"{count} configured","text_hash":"bef0da45a50dee3451c5a3c3d23bce1bcd1dc512dab3712414475ece685a3325","tgt_lang":"fa","translated":"{count} پیکربندیشده","updated_at":"2026-04-29T19:28:44.177Z"}
|
||||
{"cache_key":"1c8e141e908c337f80e4669dd3e7d063a591b2d4c74e0b25ed4ce666ef63e569","model":"gpt-5.5","provider":"openai","segment_id":"common.relink","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Relink","text_hash":"6c2050caec79d2e5993192ad10a22ec6347ab647a1a7dfd9e797e64737f3f295","tgt_lang":"fa","translated":"پیوند مجدد","updated_at":"2026-04-29T17:41:14.004Z"}
|
||||
{"cache_key":"1d06bb3a56ac24d0472090086ebbf2c4fe425c93bc4867af9d1f889acee5873a","model":"gpt-5.5","provider":"openai","segment_id":"overview.cards.modelAuthOk","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"{count} ok","text_hash":"40dbcccbec9af7050dad66aa98388376a2bd3c6a2ebaf8eb53d72510d6104801","tgt_lang":"fa","translated":"{count} سالم","updated_at":"2026-04-29T17:42:27.724Z"}
|
||||
@@ -617,6 +619,7 @@
|
||||
{"cache_key":"a56d0d6a1529c63be70b2a7baa241499548064411672b137aaba6f52741a058e","model":"gpt-5.5","provider":"openai","segment_id":"usage.query.tip","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Tip: use filters or click bars to refine days.","text_hash":"3062d0128ec3be6245bfc99d9cd9370d6911d947f90ada05baff887e7fe8c15c","tgt_lang":"fa","translated":"نکته: برای محدود کردن روزها از فیلترها استفاده کنید یا روی نوارها کلیک کنید.","updated_at":"2026-04-29T17:43:30.624Z"}
|
||||
{"cache_key":"a578fe1b15c09624feb2f6c6053a10da6c6048bb5e9d12f6e50779589f0d9833","model":"gpt-5.5","provider":"openai","segment_id":"cron.jobs.direction","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Direction","text_hash":"9c8a9579abe55bdc8a7b97031705e2738d912de38a35262863d8f47e05d3d641","tgt_lang":"fa","translated":"جهت","updated_at":"2026-04-29T17:44:48.591Z"}
|
||||
{"cache_key":"a5afa0296713190e722e712df7e7cbda6587ce9ab7b8610992603f8396fe797c","model":"gpt-5.5","provider":"openai","segment_id":"tabs.config","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Config","text_hash":"87e89abb4c1c551fe08d355d097f18b8de78edca5f556997085681662fce8eed","tgt_lang":"fa","translated":"Config","updated_at":"2026-04-29T17:41:42.715Z"}
|
||||
{"cache_key":"a5d30f3942d098f66b176c9446b81090310f4ef2c74339b710c1efaeccce2720","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"fa","translated":"در حال تازهسازی","updated_at":"2026-05-03T18:29:08.407Z"}
|
||||
{"cache_key":"a5ed2cf24285949c641b0e6bb1f9b31eaf1046e7ea28694845391dece10857f8","model":"gpt-5.5","provider":"openai","segment_id":"overview.palette.footer.navigate","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"navigate","text_hash":"d0cda6559bb347db706f6fa92a5b2491658e0c1e5bda98bb14e3c8a711b8fa33","tgt_lang":"fa","translated":"پیمایش","updated_at":"2026-04-29T17:42:42.019Z"}
|
||||
{"cache_key":"a64f8dd8c1791c58aafec34c3060e1d1257a37f4247cba67fdebdb049ccf1edb","model":"gpt-5.5","provider":"openai","segment_id":"channels.gatewayUrlConfirmation.title","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Change Gateway URL","text_hash":"72b5e3578a95dcde8c7bb08200cffc3dbeb405095e2304cc93f71b18977cc145","tgt_lang":"fa","translated":"تغییر URL Gateway","updated_at":"2026-04-29T17:41:22.192Z"}
|
||||
{"cache_key":"a651410c57e84ab4de426db8ab2cbb435dfb626e7f35fbbfcff2d12704f4b5ec","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.delivery.silent.label","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Silent","text_hash":"ddbcf06726488a43af36838754808ac5041b05ab6434735615979d820725b56f","tgt_lang":"fa","translated":"بیصدا","updated_at":"2026-04-29T20:17:37.146Z"}
|
||||
@@ -630,6 +633,7 @@
|
||||
{"cache_key":"a85a05414f3fb1c9db6ada969a2cc8ee0066de4cfd5ce3ac6ea4d21456882400","model":"gpt-5.5","provider":"openai","segment_id":"cron.jobDetail.system","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"System","text_hash":"6725e7bbcd28f3a8a586fa34bf191fd72dde8b61756932cd3237c17a6f196f1a","tgt_lang":"fa","translated":"سیستم","updated_at":"2026-04-29T17:45:41.473Z"}
|
||||
{"cache_key":"a924fc2075a9a19bf8da7cca2569cd9750c6624f5d3ab6c382fcdfa35c9d187c","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.fixFields","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Fix {count} field to continue.","text_hash":"d23ecdcad6814e7d5b166d385f58c95735e3219acba8ec2b07c74345681e63d2","tgt_lang":"fa","translated":"برای ادامه، {count} فیلد را اصلاح کنید.","updated_at":"2026-04-29T17:45:41.473Z"}
|
||||
{"cache_key":"a93a5403c421f73a6b1a67b189ba65e199963bccce75abafd110f0604213fa1a","model":"gpt-5.5","provider":"openai","segment_id":"usage.filters.pinned","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Pinned","text_hash":"f20c879465551f0d1457a13d4390d0f1ece456b115d75463169c5d55341b9b1e","tgt_lang":"fa","translated":"سنجاقشده","updated_at":"2026-04-29T17:43:25.173Z"}
|
||||
{"cache_key":"a94086b5e71c7c931c583f915d4aa89a6645fd97e40f450d8cd74fd179a124a7","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"fa","translated":"{status}: {pending} در انتظار، {stale} قدیمی، {cached} کششده","updated_at":"2026-05-03T18:29:08.407Z"}
|
||||
{"cache_key":"a94487a9d0e0868f7cdfe7dc99ac452b5dbad4d428fb00087bb8015b15cbb550","model":"gpt-5.5","provider":"openai","segment_id":"overview.access.hidePassword","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Hide password","text_hash":"a60a56c584b3b05b1a95076a36edbab7131a447910cf21124efcb35f769502df","tgt_lang":"fa","translated":"پنهان کردن گذرواژه","updated_at":"2026-04-29T17:41:58.639Z"}
|
||||
{"cache_key":"a99e858512049d335821425e5b33280ab316cb889704cb87b547589af5dcb2ee","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.timelineFiltered","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"timeline filtered","text_hash":"55a998947f847b55b7ed5d043bb86b0229c9bd2ae0a0f2ba61e74a2904f56100","tgt_lang":"fa","translated":"خط زمانی فیلتر شده","updated_at":"2026-04-29T17:44:16.613Z"}
|
||||
{"cache_key":"a9a870f0f32a0b23436b3715723e9d18fe4c9d957cd715f2664afa2d750966ff","model":"gpt-5.5","provider":"openai","segment_id":"execApproval.execApprovalNeeded","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Exec approval needed","text_hash":"3fc4e80c56aa2e74680e322f66fd0ea5b972f89c383e69b3355cbb9449f91ffc","tgt_lang":"fa","translated":"تأیید اجرا لازم است","updated_at":"2026-04-29T19:29:02.592Z"}
|
||||
@@ -897,6 +901,7 @@
|
||||
{"cache_key":"e9cbee00ef1a0295ec3d264f79b21d99b8b8f0096452650ca32de7a3c1433244","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.diary.newer","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Newer","text_hash":"718c45696575a3aae41c3701a734767de3f3d1d7658c292804a6e3e90b1ce3a5","tgt_lang":"fa","translated":"جدیدتر","updated_at":"2026-04-29T17:43:08.525Z"}
|
||||
{"cache_key":"ea565e503ddd1de6cd8ea423c9be1f52a211f9782fe46e684f540e840832bd04","model":"gpt-5.5","provider":"openai","segment_id":"usage.breakdown.input","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Input","text_hash":"36ecb4f8669133ce744c21982ba4abe2ecd7086e1dc2226ccd6f266f3a5005f8","tgt_lang":"fa","translated":"ورودی","updated_at":"2026-04-29T17:43:39.827Z"}
|
||||
{"cache_key":"ead51bfb5ce7d5f4822284ac4591aca5eec6095ff895531c98a8cc0457b1b557","model":"gpt-5.5","provider":"openai","segment_id":"subtitles.channels","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Channels and settings.","text_hash":"c638a7924fc0fc1cf02059111dd7d81a01173c0b223b2b43526dbb37a9f5604e","tgt_lang":"fa","translated":"کانالها و تنظیمات.","updated_at":"2026-04-29T17:41:50.179Z"}
|
||||
{"cache_key":"eae720b9171061f980d48c526c6c4721ce7bfb70a86f252ff7dc3d252e25d6ca","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"fa","translated":"جزئی","updated_at":"2026-05-03T18:29:08.407Z"}
|
||||
{"cache_key":"eb92afdf492bdf21053a401dedb7100a836fe22597e4af9d419e091bbd4405bc","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.throughputHint","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Throughput shows tokens per minute over active time. Higher is better.","text_hash":"25aa92e440598aef332a7addc6d14989f1f7562c8fa83110304de0ecd228d8a1","tgt_lang":"fa","translated":"توان عملیاتی، توکنها در دقیقه را در زمان فعال نشان میدهد. هرچه بیشتر باشد بهتر است.","updated_at":"2026-04-29T17:43:54.986Z"}
|
||||
{"cache_key":"ec9d1bcdd9ff7ae076a1c0ca001abc948d0037105958e02ee7b84359f646e2e4","model":"gpt-5.5","provider":"openai","segment_id":"overview.cards.cost","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Cost","text_hash":"204a5eb2cd28bcfdf3be9f8c765948e9e831609e3c57048cdbd6b8a94cf49126","tgt_lang":"fa","translated":"هزینه","updated_at":"2026-04-29T17:42:27.724Z"}
|
||||
{"cache_key":"ecbb26a33ce5fcc2240d91dc3976140eca469e81b416878e3ddf71c6f67717dd","model":"gpt-5.5","provider":"openai","segment_id":"cron.runs.runStatusError","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Error","text_hash":"54a0e8c17ebb21a11f8a25b8042786ef7efe52441e6cc87e92c67e0c4c0c6e78","tgt_lang":"fa","translated":"خطا","updated_at":"2026-04-29T17:44:55.845Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:13:58.848Z",
|
||||
"generatedAt": "2026-05-03T18:28:35.244Z",
|
||||
"locale": "fr",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
{"cache_key":"1348484540c4258627b3a4160e04ab84ffb595e97f3ca13ccd7a8d868688cf3f","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.skills","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Skills","text_hash":"66d0f523a379b2de6f8d5fba3a817ebc395f7bcaa54cc132ca9dfa665d1e9378","tgt_lang":"fr","translated":"Skills","updated_at":"2026-04-06T03:00:00.760Z"}
|
||||
{"cache_key":"134cb07376778b5be185580d5fa8f273feaf9ce20cf13794cdb56dfa81c94a7a","model":"gpt-5.5","provider":"openai","segment_id":"chat.dismissUpdateBanner","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Dismiss update banner","text_hash":"d6ea0e1880269d89db7cc965d67bacc2127ac8368a7a8a9f50b21cb23691fdcf","tgt_lang":"fr","translated":"Ignorer la bannière de mise à jour","updated_at":"2026-04-29T20:13:54.945Z"}
|
||||
{"cache_key":"13b0917713cca9bec28a2d673d502164cdf58285b525bcdb433198f9fb8c0b58","model":"gpt-5.5","provider":"openai","segment_id":"languages.nl","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Nederlands (Dutch)","text_hash":"0287fda204edd760d95a69ab350efebd123bd93b6c0b5d19a9d60b81147f15f6","tgt_lang":"fr","translated":"Nederlands (néerlandais)","updated_at":"2026-04-29T17:36:08.757Z"}
|
||||
{"cache_key":"13e1fde32dabacd69c49ac704b6faf8dc8910944c30c6c948c6f2684e5e2adf2","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"fr","translated":"partiel","updated_at":"2026-05-03T18:28:35.092Z"}
|
||||
{"cache_key":"1451de0b9b8296a1a6dfa1e051e10dcc3da4920c0f9f315d56de1d4886876614","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.originDailyLog","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"replayed","text_hash":"ae94da4c1a6fabab4512e07bd7f597adec85b16c801a4b69251f9c4165010495","tgt_lang":"fr","translated":"rejoué","updated_at":"2026-04-10T07:59:16.122Z"}
|
||||
{"cache_key":"14815749999a51ddb80747678f98fe23a11c7d5db994321711cbc80dd21e948c","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.thinkingHelp","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Use a suggested level or enter a provider-specific value.","text_hash":"f212b73f0e1d00bfe2385182c16c191c67357d75ec402daa6ec9575bd07c30a3","tgt_lang":"fr","translated":"Utilisez un niveau suggéré ou saisissez une valeur spécifique au provider.","updated_at":"2026-04-05T17:15:59.853Z"}
|
||||
{"cache_key":"14c9132dd7e3ae74edd9ce9937ad9f3e177f68912d4a0fbe5878f18d45abc1b1","model":"gpt-5.4","provider":"openai","segment_id":"chat.thinkingToggle","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Toggle assistant thinking/working output","text_hash":"39aaede23f67f098a7adb9a25d7e6301aa05fa651a9b7e7e482ab8246d090577","tgt_lang":"fr","translated":"Afficher/masquer la sortie de réflexion/travail de l’assistant","updated_at":"2026-04-05T17:15:31.267Z"}
|
||||
@@ -94,6 +95,7 @@
|
||||
{"cache_key":"1c5248bec27f24e33af8ac92b99e7490d8d8af1649fc1c264f109e06b72c5f1a","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.timeoutSeconds","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Timeout (seconds)","text_hash":"1f966032d11151c8753c9620f155e055f2c45ce4107d8b0f47f839953a441df7","tgt_lang":"fr","translated":"Délai d’expiration (secondes)","updated_at":"2026-04-05T17:15:52.177Z"}
|
||||
{"cache_key":"1c7c2c9ad278b89427b9653de8d42c0bf79f25e60f11bfc810d47866b95722d8","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.tokenDeltaUnavailable","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"token delta unavailable","text_hash":"0f6bf09152fcc457d482589f3ed28fcc8e7969943ed92e780d1b2f62f6bacc5d","tgt_lang":"fr","translated":"delta de tokens indisponible","updated_at":"2026-04-29T20:13:50.921Z"}
|
||||
{"cache_key":"1cec31dbe8364ae44a1988a4924fc7dcd03f14be2f9d3b364c9b8982c9108d14","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobList.clone","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Clone","text_hash":"5779f32fab00c2aae390fe9f63877444b90eb7c12cca5e8903f7c02d2759f9db","tgt_lang":"fr","translated":"Cloner","updated_at":"2026-04-05T17:15:59.853Z"}
|
||||
{"cache_key":"1d0667436d8d7afdf71c86fe4042866430c80d9d5cf99a945b314781d044a64a","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"fr","translated":"Le cache d’utilisation est en cours de reconstruction en arrière-plan. Les totaux affichés peuvent être obsolètes.","updated_at":"2026-05-03T18:28:35.092Z"}
|
||||
{"cache_key":"1d16dc8584c1b0eb62f5173c9c0fa3e7babfa8f201dc911ef5c03e0b2b122697","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.noTimeline","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"No timeline data","text_hash":"27318307eb94eb3cc0c8e365dc7c1b56f1d5876b8af208739832ff52aaf17022","tgt_lang":"fr","translated":"Aucune donnée de chronologie","updated_at":"2026-04-05T17:14:27.645Z"}
|
||||
{"cache_key":"1d5d502ee72ec45f61189634fbe30ba9284b9e0b3f2a8df5b95d39def3a9b053","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.timeoutPlaceholder","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Optional, e.g. 90","text_hash":"6df8499092f2542448e280448a6915fe0d1b5354749ad0170108e193bfd23583","tgt_lang":"fr","translated":"Facultatif, ex. 90","updated_at":"2026-04-05T17:15:52.177Z"}
|
||||
{"cache_key":"1d8d2de47ca890e092374014d2a5a37bd5cd1164b27356c61ea9106fc482aa7c","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.daysCount","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"{count} days","text_hash":"e9f0a85930cc6fa61b7ac01763893020adc4c712d1b8e8897bdd13971637d529","tgt_lang":"fr","translated":"{count} jours","updated_at":"2026-04-05T17:14:12.481Z"}
|
||||
@@ -387,6 +389,7 @@
|
||||
{"cache_key":"6eae5cb9a78effb6c71c6cbda7ef4dde87bc3ebdf953d1a1f086b183f0cc2af6","model":"gpt-5.5","provider":"openai","segment_id":"common.back","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Back","text_hash":"76900f1bfd16c8d4dd3d25e6f46638d7165aee23883ccea6bfe071c514421769","tgt_lang":"fr","translated":"Retour","updated_at":"2026-04-29T20:13:43.862Z"}
|
||||
{"cache_key":"6f35a714e2654dade430990dc30a59a29146f95a3968cc6b6a06cf45511eb8cd","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.stats.signals","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Signals","text_hash":"88b01c8a4bff9a08b6b56b8de43beb07205956d64d1c58eff683de7eaf3645e5","tgt_lang":"fr","translated":"Signaux","updated_at":"2026-04-06T02:49:55.695Z"}
|
||||
{"cache_key":"6f5a2ef07e95945733bf8b78c8c42a29ed35cd7144d1848b23e501a730f0a749","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.deleteAfterRun","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Delete after run","text_hash":"ed7fcb6a70cb79c43343fd72da48695bc36b8863afba224ed8f7fc3d797e20d3","tgt_lang":"fr","translated":"Supprimer après exécution","updated_at":"2026-04-05T17:15:56.876Z"}
|
||||
{"cache_key":"6f9639028828027f6feff379e1a008f9cfccdba2c5fc8d9c92a02685d8675941","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"fr","translated":"obsolète","updated_at":"2026-05-03T18:28:35.092Z"}
|
||||
{"cache_key":"6fb3732acb04a1fdc167f3fe788cd016aebfa74967de0a66f19bb14bdb534717","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.fri","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Fri","text_hash":"66dab40cea1dea5c070c83f775b1ebc2b612b1b9cca1c62ad38815c4ff47b25d","tgt_lang":"fr","translated":"Ven","updated_at":"2026-04-05T17:14:34.186Z"}
|
||||
{"cache_key":"703ab645cbd25144f31c0a85d00c08291413a20aa08c0b8fe0bd041e143686f3","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.selectSession","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Select session","text_hash":"803814693885dfb92ec8373f4c02f31015541e0e97e437287cdd0db681e0dae6","tgt_lang":"fr","translated":"Sélectionner la session","updated_at":"2026-04-29T20:13:43.862Z"}
|
||||
{"cache_key":"714e8e7b24b4a55334b6db3218dc7f68792c93e6561f6bee94c00dfe57ed5108","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.allDelivery","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"All delivery","text_hash":"41ae1c2395e52fa33ba7df91afec0e316cd9e36a74a39b87a825f65a7dce707b","tgt_lang":"fr","translated":"Toute la distribution","updated_at":"2026-04-05T17:15:40.832Z"}
|
||||
@@ -619,6 +622,7 @@
|
||||
{"cache_key":"bb0de5682a8d4be764e0616c6ff3c555314f4ec95f6f486c7e2c20c46e37e560","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.executionSub","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Choose when to wake, and what this job should do.","text_hash":"9869059549e542582d729fa6b7b84eb6f4d0eccee80f734646a44d443b945267","tgt_lang":"fr","translated":"Choisissez quand réveiller et ce que cette tâche doit faire.","updated_at":"2026-04-05T17:15:46.853Z"}
|
||||
{"cache_key":"bb0fb61960b5b45dc5af378fdc7a9de387ebd627e80d78502cfa807f9d18ef90","model":"gpt-5.4","provider":"openai","segment_id":"usage.query.inRange","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"{total} sessions in range","text_hash":"a7280631c94ed4479e25609cb443b235d3be5cb364d1feb28c1d5d8ecd132714","tgt_lang":"fr","translated":"{total} sessions dans l’intervalle","updated_at":"2026-04-05T17:14:12.481Z"}
|
||||
{"cache_key":"bb4636e66509696ce797b0c8e3279e9693bc6a2b137bc717799e5c9d9c72f45b","model":"gpt-5.4","provider":"openai","segment_id":"overview.pairing.docsLink","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Docs: Device pairing","text_hash":"3c43dc8fc050619b6acd3ee877420360cba1387553c4bc6bf5036e34282c4879","tgt_lang":"fr","translated":"Documentation : Appairage des appareils","updated_at":"2026-04-20T06:26:41.876Z"}
|
||||
{"cache_key":"bb4fb93aa06086ee27c1e355dc2252f249937320ffab6ca4da7421765d8e1fc3","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"fr","translated":"actualisation","updated_at":"2026-05-03T18:28:35.092Z"}
|
||||
{"cache_key":"bbbba8475a9c979a567a4e6c3e0c0437cceeed5440bff50642f1eeac3eaf3e91","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.delivery.notify.description","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Deliver results to chat","text_hash":"2c52a24163167b77889acbbf34defbdaf4ca334db34c25c133c139e5152ad86d","tgt_lang":"fr","translated":"Envoyer les résultats au chat","updated_at":"2026-04-29T20:13:54.945Z"}
|
||||
{"cache_key":"bc3eeae8eccbbe0c0cb20ab0ab3d6e4fff0cf58face4ca10948c3cae9a300861","model":"gpt-5.4","provider":"openai","segment_id":"channels.health.noSnapshotYet","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"No snapshot yet.","text_hash":"3b578b0bf270913e649934e72f7ef6584ed56b1e10dc563b541384ff660bbfbc","tgt_lang":"fr","translated":"Aucun instantané pour le moment.","updated_at":"2026-04-06T02:49:41.314Z"}
|
||||
{"cache_key":"bc6004ed39c39883aa26c30bb7c10c4b43545f6557f95252286ae18826a58e54","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.header.refreshing","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Refreshing…","text_hash":"1c0def7be0607b966b89e4974da38090472d8ada625f5b4c89f25b09d39683bd","tgt_lang":"fr","translated":"Actualisation…","updated_at":"2026-04-06T02:49:55.695Z"}
|
||||
@@ -633,6 +637,7 @@
|
||||
{"cache_key":"bea8c29155102b62d5f16fde55778eb331b70b2dd74efef5fe9fcc854498b88b","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.systemEventHelp","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Sends your text to the gateway main timeline (good for reminders/triggers).","text_hash":"284a601bd74ca50e61fcf8ec9749af44936ad445a6098d38c63090b731b46508","tgt_lang":"fr","translated":"Envoie votre texte à la chronologie principale du Gateway (idéal pour les rappels/déclencheurs).","updated_at":"2026-04-05T17:15:52.177Z"}
|
||||
{"cache_key":"bec3ffa59ea63c58b44de3414a3cbf98fe21a0434544815eb58d36f231c72d4c","model":"gpt-5.4","provider":"openai","segment_id":"common.probeFailed","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Probe failed","text_hash":"450e4a86d32cc99604a33165c0f71dbd9b3d353a82ef73b931667da22c925abc","tgt_lang":"fr","translated":"Échec de la sonde","updated_at":"2026-04-06T02:49:37.962Z"}
|
||||
{"cache_key":"beca554cfc670e427a8fc166a3d10d0fca6396b23a2dda4a187fc28b2aa5c6e7","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.expression","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Expression","text_hash":"c67415bcff328a59fd399e2a7ca9691e0044192fb7480ae501644339965d046d","tgt_lang":"fr","translated":"Expression","updated_at":"2026-04-06T03:00:00.760Z"}
|
||||
{"cache_key":"bed38b53ac03a479149f540cf2d14f76121b01c3169778d632508835ca1a4e4a","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"fr","translated":"{status} : {pending} en attente, {stale} obsolètes, {cached} en cache","updated_at":"2026-05-03T18:28:35.092Z"}
|
||||
{"cache_key":"bedb7864a20dc89d65384023ef3c22f97ccdd1d7463b867312ad84afb78aa1cb","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.startDate","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Start date","text_hash":"8169693101a4536c24e384595cce97fa4740c7529114bead65525f5532699597","tgt_lang":"fr","translated":"Date de début","updated_at":"2026-04-05T17:14:09.807Z"}
|
||||
{"cache_key":"beeccbf26c0dc54c01b510c378f4ae49f00f2bb2bcc536c4d7df3195b8835a2f","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.noContextData","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"No context data","text_hash":"b47c4d5f0e9832bb8f16a4025296a6c41d7aaa7200a07746b6e35359dc464f28","tgt_lang":"fr","translated":"Aucune donnée de contexte","updated_at":"2026-04-05T17:14:30.205Z"}
|
||||
{"cache_key":"bf2885c0af23bace8bcb9071d2c489108e808aed10f649c8814e09dae496bb87","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.avgTokens","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Avg Tokens / Msg","text_hash":"1f05d402adffc61f856e1a7635fe233c07b897448cae656802b70f7b3c521c88","tgt_lang":"fr","translated":"Moy. jetons / msg","updated_at":"2026-04-05T17:14:18.569Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:16:15.770Z",
|
||||
"generatedAt": "2026-05-03T18:28:50.810Z",
|
||||
"locale": "id",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -173,6 +173,7 @@
|
||||
{"cache_key":"315f65f7f2eaa5c36bc8ec171c82c7325f492c638e2d2c3691cf6e49a8a5808e","model":"gpt-5.4","provider":"openai","segment_id":"overview.pairing.docsTitle","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Device pairing docs (opens in new tab)","text_hash":"4177ade2659cf1572b125131d05b31acb82f462f6bccaa4a136abff574e14a60","tgt_lang":"id","translated":"Dokumentasi pemasangan perangkat (dibuka di tab baru)","updated_at":"2026-04-20T06:26:57.806Z"}
|
||||
{"cache_key":"31bc1e6a0b21645897fa3979c9671a4d8fa2c7c79fb0551aa1a3757b763e75d2","model":"gpt-5.4","provider":"openai","segment_id":"common.cancel","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Cancel","text_hash":"19766ed6ccb2f4a32778eed80d1928d2c87a18d7c275ccb163ec6709d3eb2e27","tgt_lang":"id","translated":"Batal","updated_at":"2026-04-06T02:50:37.350Z"}
|
||||
{"cache_key":"3206124c13bbffe684f22ece77eccf7bb1e2a2cd6043f3f3bb7865af8f04a3c5","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.sortRecent","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Most recent","text_hash":"7459b8690410d3da0417aab2c54d61c54472d9f59b353a09e11570dd5542fc2a","tgt_lang":"id","translated":"Terbaru","updated_at":"2026-04-10T07:59:43.069Z"}
|
||||
{"cache_key":"3219f463c2988c83ad2c9802ca528b428ef55a3eac72ef99b172b971ef51607c","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"id","translated":"sebagian","updated_at":"2026-05-03T18:28:50.658Z"}
|
||||
{"cache_key":"32244a43ffa58ad62c838cd08aa6584e70a5708948f740e47ebaf86c0fe7506b","model":"gpt-5.5","provider":"openai","segment_id":"chat.openCommandPalette","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Open command palette","text_hash":"c022b19a38a632d9f0981df1407ed11743b7fd8a80b159b76a7cf78ad61a43b1","tgt_lang":"id","translated":"Buka palet perintah","updated_at":"2026-04-29T20:16:07.309Z"}
|
||||
{"cache_key":"325dc57b048a1f13eaf3beff2580fb66980fafcfedf41facc73ec67dcf3ffac6","model":"gpt-5.4","provider":"openai","segment_id":"tabs.debug","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Debug","text_hash":"1a03bd2fd107c453f3183e30b9716f82200671e8270fbbefbe602f5a48705527","tgt_lang":"id","translated":"Debug","updated_at":"2026-04-06T03:00:14.591Z"}
|
||||
{"cache_key":"326831053a811c40191ea0076e015f3365317e45629c782054b154a28d74ca29","model":"gpt-5.4","provider":"openai","segment_id":"common.publicKey","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Public Key","text_hash":"a51af74c1dda1bf0f6a64455d747f7e14aa8cda977cbe7b26fb9d5323125d41a","tgt_lang":"id","translated":"Kunci Publik","updated_at":"2026-04-06T02:50:40.390Z"}
|
||||
@@ -234,6 +235,7 @@
|
||||
{"cache_key":"4450bd2a02751cd20f6a10627347f792c0a9e3058ee1b7acf2117efb3a337067","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.status.idle","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Dreaming Idle","text_hash":"bb633a8129a7ecd9922ff32833ba5d6f74fff826bd83aa15af0aafc9ba8de863","tgt_lang":"id","translated":"Dreaming Idle","updated_at":"2026-04-06T03:00:16.952Z"}
|
||||
{"cache_key":"44aee1853777adc547596769f3480f0e9be0e8e854bb83228b857ad256632901","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.timezoneOptional","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Timezone (optional)","text_hash":"88a0be3b8e80be284402e4fbb2b045b98c9e47fd2b66ed9cc6fec4a6e726cf03","tgt_lang":"id","translated":"Zona waktu (opsional)","updated_at":"2026-04-05T17:16:08.193Z"}
|
||||
{"cache_key":"44cc4fd53e3da648e1aaa8df074edc0579fe864ff9ced00425d8cb59b1fce61b","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobList.remove","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Remove","text_hash":"c3812fc4acb861d5182fc2b8155f327f736fbe5e5eb86a7bd7afcb6dc5497282","tgt_lang":"id","translated":"Hapus","updated_at":"2026-04-05T17:16:23.016Z"}
|
||||
{"cache_key":"44e9a92d0164ac7ba1303b028ea91e51afa3cbc68f2af30f19faa82ea53e6d41","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"id","translated":"menyegarkan","updated_at":"2026-05-03T18:28:50.658Z"}
|
||||
{"cache_key":"4517c73105d79361d6932bab5fde5e2bd865a42f7ecd6069b3a278d03f473263","model":"gpt-5.4","provider":"openai","segment_id":"tabs.agents","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Agents","text_hash":"279b44d2ab4b40c0fc132f8f3051293544cca91de9c8aa14f2cd29adb132b0ee","tgt_lang":"id","translated":"Agen","updated_at":"2026-04-05T17:15:05.673Z"}
|
||||
{"cache_key":"4573efca6109cbbc4b273da698eb1c4b4b33a41fa492ce73174cceeac02e67df","model":"gpt-5.4","provider":"openai","segment_id":"login.togglePasswordVisibility","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Toggle password visibility","text_hash":"1016c07b0f58d365790cc799fb215afd92fde1aeb5ac47cd17260e327465b2d6","tgt_lang":"id","translated":"Alihkan visibilitas kata sandi","updated_at":"2026-04-20T06:30:14.727Z"}
|
||||
{"cache_key":"45d0ed0cb49b5df72f5e1f1f854f4a802f12cfbdc273bbaef2ecda1dc6c3aaf8","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.eightPm","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"8pm","text_hash":"232df857db5e72521b783719e674c41bce48738283c637b44ed2a80fa81ec56c","tgt_lang":"id","translated":"8pm","updated_at":"2026-04-06T03:00:16.952Z"}
|
||||
@@ -367,6 +369,7 @@
|
||||
{"cache_key":"70e7aa1a25f0eb873b1f83a8d78fbe4c6444d0db513b036e6c99c26edc3a596b","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.allDelivery","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"All delivery","text_hash":"41ae1c2395e52fa33ba7df91afec0e316cd9e36a74a39b87a825f65a7dce707b","tgt_lang":"id","translated":"Semua pengiriman","updated_at":"2026-04-05T17:16:01.471Z"}
|
||||
{"cache_key":"7135b9d04ae1f6438b013e12a12aa9d4ce11b4e5bf92fb24ade5db2fe7997aec","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.nameOptional","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Name (optional)","text_hash":"e09b37bcc4f301f48329f9e0c5ee747acf821d692e9aac10abea5970ba70b1b4","tgt_lang":"id","translated":"Nama (opsional)","updated_at":"2026-04-29T20:16:15.616Z"}
|
||||
{"cache_key":"7213d00f8212914a7b04c71f0df6f155aa730c5a3bac3feec119d3f2cbd7ea45","model":"gpt-5.4","provider":"openai","segment_id":"usage.empty.hint","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Select a date range and click Refresh to load usage.","text_hash":"4dcf5dc94773068c4f25aea20473dffbbd254ea813f8890bd5bf233df13614a5","tgt_lang":"id","translated":"Pilih rentang tanggal dan klik Refresh untuk memuat penggunaan.","updated_at":"2026-04-05T17:15:31.149Z"}
|
||||
{"cache_key":"730eacc09197c249bd79e0f4a29b92fd59b53cbfeeba117b04a886b623a5bea8","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"id","translated":"Cache penggunaan sedang dibangun ulang di latar belakang. Total yang ditampilkan mungkin sudah kedaluwarsa.","updated_at":"2026-05-03T18:28:50.658Z"}
|
||||
{"cache_key":"73560088232dcea41fb5917d7173243ef42b48a561de467754031c5394671953","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.reasoning","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Reasoning","text_hash":"d8211e24e83d1600a1b0cfe2f7baa68e4d4eb71131a0b2b1b2050cba111ea481","tgt_lang":"id","translated":"Penalaran","updated_at":"2026-04-29T20:16:03.576Z"}
|
||||
{"cache_key":"73b954f397e1751c7602a4a75c78c3da7bc11d1327b91c12630f90664afc3592","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.newestFirst","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Newest first","text_hash":"ffb6f5764bddb68c49177c75a9b4a9638878f862bd5d3b1375b8eb1d40538e15","tgt_lang":"id","translated":"Terbaru lebih dulu","updated_at":"2026-04-05T17:15:58.217Z"}
|
||||
{"cache_key":"73e26faaf4a1426d727fe957fdef32a21842eb888caa6009fed6753bb4f25ba1","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.diary.noDreamsYet","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"No dreams yet","text_hash":"56ee279116c32430a788602b1a13522e463b1ab0db6e6b559e02146342ab9d63","tgt_lang":"id","translated":"Belum ada mimpi","updated_at":"2026-04-06T02:50:59.269Z"}
|
||||
@@ -448,6 +451,7 @@
|
||||
{"cache_key":"9031150b95540a7e210d546177aa41e414e516e1e8d4c6b0053294dcc8cd7199","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.docsLink","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Read the docs →","text_hash":"412b59669150e05afaf4671cae2d9708750732c55d290efffeec7dcf7fef80e7","tgt_lang":"id","translated":"Baca dokumentasi →","updated_at":"2026-04-05T17:15:22.827Z"}
|
||||
{"cache_key":"904aad654ceabd983ba61e1b827188278b79a42d76418ed3836b0f7270b3231f","model":"gpt-5.4","provider":"openai","segment_id":"agentTools.connected","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Connected","text_hash":"22965568d22a14ee17af055d2870b50afcfe9fd94a83eec3196e266932297bb2","tgt_lang":"id","translated":"Terhubung","updated_at":"2026-04-06T02:50:55.333Z"}
|
||||
{"cache_key":"90655392d9b9fde28fc6c7952c32226bd1dbaed8407d1a9cad6e3f1c2e888236","model":"gpt-5.4","provider":"openai","segment_id":"overview.access.connectHint","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Click Connect to apply connection changes.","text_hash":"473e1a24ad5a8bff00b2db667b8ff16a9b537a5b127dd2af42842620ea830b6d","tgt_lang":"id","translated":"Klik Connect untuk menerapkan perubahan koneksi.","updated_at":"2026-04-05T17:15:15.082Z"}
|
||||
{"cache_key":"906ddf2d133496b827768abefa92b7e5b8d47a3d1d7e1fdb97e29e637c1f76e1","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"id","translated":"kedaluwarsa","updated_at":"2026-05-03T18:28:50.658Z"}
|
||||
{"cache_key":"9085bc6a7b6053ccbbe53bd6fd3f8ed31f339bf4e4d061502d6e36c9f14a0c8a","model":"gpt-5.4","provider":"openai","segment_id":"overview.palette.placeholder","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Type a command…","text_hash":"96489e83623d94011df336e2a4d1a62eaf2b14913aecb4845bb11e13d88733e7","tgt_lang":"id","translated":"Ketik perintah…","updated_at":"2026-04-05T17:15:22.827Z"}
|
||||
{"cache_key":"90aec842464e5d88bbe8ec48a67dc2b114acb07148b3f639385c1bd1835a77e5","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.toolsUsed","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"tools used","text_hash":"6b8956397b4b2d4c5ffa56aaa71dedc923afc6618e4043f3c5a0805fdff2d1d2","tgt_lang":"id","translated":"alat yang digunakan","updated_at":"2026-04-05T17:15:35.078Z"}
|
||||
{"cache_key":"90c1dbe5022a9331d8d0c965f20c5c22ef3d002701c370ea9dffbb175bb2304d","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.allStatuses","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"All statuses","text_hash":"8ee57323a6f24cc7a5e2395cc0bec1eafc76799ef0e0f31c7a81ddb87faf7a2b","tgt_lang":"id","translated":"Semua status","updated_at":"2026-04-05T17:16:01.471Z"}
|
||||
@@ -500,6 +504,7 @@
|
||||
{"cache_key":"9f6996a3b0869ee116c58d2d6a3c09d6aaaf191fcb4114693f75814a3d732370","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.agentTurnHelp","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Starts an assistant run in its own session using your prompt.","text_hash":"96fbd6ab75c8af8fb9a095827bf23510c72fcbd595d3a20a28ce389d8f288dd1","tgt_lang":"id","translated":"Memulai proses asisten di sesinya sendiri menggunakan prompt Anda.","updated_at":"2026-04-05T17:16:12.152Z"}
|
||||
{"cache_key":"9f7e6e90ad1bfbd856aa6e73b940818f573f4c18294d6eb49b6257855b017d51","model":"gpt-5.4","provider":"openai","segment_id":"overview.snapshot.title","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Snapshot","text_hash":"6ad27bd4ec33b079208334dfea86ff96900f95ca640dda1d2638d694d077668b","tgt_lang":"id","translated":"Snapshot","updated_at":"2026-04-06T03:00:14.591Z"}
|
||||
{"cache_key":"9fd12b36236f37df4fffd4bcf340c49010f10568abfe598720e81bea002deb95","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.peakErrorDays","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Peak Error Days","text_hash":"6851f93681ae97c562b5dfa5867f7779c06c144085834b211cb8795bcb7073c4","tgt_lang":"id","translated":"Hari dengan Puncak Kesalahan","updated_at":"2026-04-05T17:15:38.246Z"}
|
||||
{"cache_key":"a0020425709eb63c7ae22c46cb3874a07273f0b08b962697840a46dbd9faf918","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"id","translated":"{status}: {pending} tertunda, {stale} kedaluwarsa, {cached} tersimpan dalam cache","updated_at":"2026-05-03T18:28:50.658Z"}
|
||||
{"cache_key":"a0c92ea44e7607ade6db5ea575af1824b2bf5fa970793d5598fd43106efa8031","model":"gpt-5.4","provider":"openai","segment_id":"usage.export.sessionsCsv","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Sessions CSV","text_hash":"9b0913342966fc345b0390547e157f2a56ed3d31606eef63511fa26d5710c4bf","tgt_lang":"id","translated":"CSV Sesi","updated_at":"2026-04-05T17:15:28.286Z"}
|
||||
{"cache_key":"a12310f5a4a7e51216cef1912915f8aad255fc85522f1cc007720ec8d1ac8be5","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.eyebrow","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Review","text_hash":"aff0766a5290e117b8433c351bae7b7b23bed682b2369bd822d88a647cc58512","tgt_lang":"id","translated":"Tinjau","updated_at":"2026-04-10T07:59:43.069Z"}
|
||||
{"cache_key":"a1575d7632abb4c81874fcdd987e4ddf3ee06b3bb9f614802be6333b296471f1","model":"gpt-5.4","provider":"openai","segment_id":"subtitles.aiAgents","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Agents, models, skills, tools, memory, session.","text_hash":"5287f8a70328347ae6d9ac8fdf076a630f642c1a10dcfee96cd280aa505d8357","tgt_lang":"id","translated":"Agen, model, Skills, alat, memori, sesi.","updated_at":"2026-04-05T17:15:09.258Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:14:55.292Z",
|
||||
"generatedAt": "2026-05-03T18:28:41.755Z",
|
||||
"locale": "it",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
{"cache_key":"052179bfab48eae3b65555ed1ff019c43d29e66882692edbdb02c27ef4050e41","model":"gpt-5.5","provider":"openai","segment_id":"agentTools.connectedSource","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Connected: {id}","text_hash":"ab0206010190ba2d650ef8e223392239cdd44cb2d7aec00e40499da324731f95","tgt_lang":"it","translated":"Connesso: {id}","updated_at":"2026-04-29T17:37:27.913Z"}
|
||||
{"cache_key":"052717bb87c87d4cf61b668a71f8427f2beccd655303348937eb2533dbb90fe4","model":"gpt-5.5","provider":"openai","segment_id":"common.reload","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Reload","text_hash":"bdc090ec61e3fcfc65f469951dfe00f3f2ecfc6003c44deac8e05b7237092de6","tgt_lang":"it","translated":"Ricarica","updated_at":"2026-04-29T17:37:06.761Z"}
|
||||
{"cache_key":"058b63b85563e80c420903c333b40bc2568e6183bd3e373176f6d05fd37c7d0e","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.isolated","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Isolated","text_hash":"1d183f3f10e963cae3a2e0a10a693f7895b03602715a121d984f3406e37ba2e2","tgt_lang":"it","translated":"Isolata","updated_at":"2026-04-29T17:39:29.490Z"}
|
||||
{"cache_key":"05b57a5e51a9bfb5abaf5ee07077cd847f71ed1a1c715483c59b37c32b4793fd","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"it","translated":"La cache di utilizzo viene ricostruita in background. I totali visualizzati potrebbero non essere aggiornati.","updated_at":"2026-05-03T18:28:41.603Z"}
|
||||
{"cache_key":"05d891e9f40630f900765c48a562ccb04b0a3381251d4d23f07739eab454bb43","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.phrases.promotingHunches","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"promoting promising hunches…","text_hash":"493f45d89bba211da77e3de94c05d9a51a4b87537a6778114b8670ee892c0ae3","tgt_lang":"it","translated":"promozione delle intuizioni promettenti…","updated_at":"2026-04-29T17:38:21.878Z"}
|
||||
{"cache_key":"05fc0ad6f551fdb1a6afe7a34d9ab0feaa1a1dcb5318318bd729dcfeeb1ee859","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.verbose","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Verbose","text_hash":"2cd57109145ab1cb603c7417e2c382756f332d0fc0f9a43b4d461f7d55f5a09f","tgt_lang":"it","translated":"Dettagliato","updated_at":"2026-04-29T20:14:44.414Z"}
|
||||
{"cache_key":"061e18f27f40c4a878544fa69b77857d23fa9112a1d733ba3b37c43bc4313df0","model":"gpt-5.5","provider":"openai","segment_id":"usage.metrics.session","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"session","text_hash":"3f3af1ecebbd1410ab417ec0d27bbfcb5d340e177ae159b59fc8626c2dfd9175","tgt_lang":"it","translated":"sessione","updated_at":"2026-04-29T17:38:27.250Z"}
|
||||
@@ -164,6 +165,7 @@
|
||||
{"cache_key":"2b3603044f17c696cc92e37155f8184d20daf37c31b4677908d75090dcd33769","model":"gpt-5.5","provider":"openai","segment_id":"cron.jobDetail.prompt","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Prompt","text_hash":"5c39123805ffb4e2f01ba096f17a5b18afb43c4f223afa4ba2d5a3f31cf74e09","tgt_lang":"it","translated":"Prompt","updated_at":"2026-04-29T17:39:49.212Z"}
|
||||
{"cache_key":"2b478f995a69551122bd856172eb00ed8b8ffdde96b5cb37f067a5dbab47e8a1","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.baseContextPerMessage","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Base context per message","text_hash":"f97ff4c2483a2174935304524775bc8191237e0bd314d05470c8b1f30ce435b6","tgt_lang":"it","translated":"Contesto di base per messaggio","updated_at":"2026-04-29T17:38:57.827Z"}
|
||||
{"cache_key":"2b665b51c780b761d278c1d28af84fced182c263fa0ab0b5d26d00debf6d5c1a","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.topTools","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Top Tools","text_hash":"ff908e711c3c21e0074b29e1f2953688ab11a463b463af18005e8900d92f1ee5","tgt_lang":"it","translated":"Strumenti principali","updated_at":"2026-04-29T17:38:44.414Z"}
|
||||
{"cache_key":"2bdf22b752d71590227a7c1abb6ccfae325231d8458e25210450a19bfcf9172d","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"it","translated":"obsoleta","updated_at":"2026-05-03T18:28:41.603Z"}
|
||||
{"cache_key":"2c8459d21f7ebeda0bfaebc45f3659bb00465331fdc06ce8d8db7ff9703832cd","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.schedules.everyMorning.description","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Daily at 8:00 AM","text_hash":"1cd9af2c3816010faaffc9adb5efa4e0a337f35e5af82eb4f5462d09ad62a94b","tgt_lang":"it","translated":"Ogni giorno alle 8:00","updated_at":"2026-04-29T20:14:51.694Z"}
|
||||
{"cache_key":"2cc220b4688d3c829c14da32172807711d19af1b21844528b78dde9ddf0cf0b7","model":"gpt-5.5","provider":"openai","segment_id":"nav.collapse","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Collapse sidebar","text_hash":"aab31cde23ba9783050a754575b80c05e0e799b1542990b24b4b4bde2327e37e","tgt_lang":"it","translated":"Comprimi barra laterale","updated_at":"2026-04-29T17:37:30.885Z"}
|
||||
{"cache_key":"2d47d0b004263c223747a456a68ae069eac8fc5f53195be66e474d9284cb4ec7","model":"gpt-5.5","provider":"openai","segment_id":"agents.channels.title","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Channels","text_hash":"4c8906cf76f5740ab8792aef9f0033fe21a92045e90b357816064e9f6860a03e","tgt_lang":"it","translated":"Canali","updated_at":"2026-04-29T19:26:37.953Z"}
|
||||
@@ -330,6 +332,7 @@
|
||||
{"cache_key":"5c5010f533b2ac835058576ba95b424c2f5d48d3f54909e4892d6742184ccb0e","model":"gpt-5.5","provider":"openai","segment_id":"usage.filters.session","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Session","text_hash":"6959b4159575d8dd76d9f3bbe2c6437904f861e7860c35abd18deffb1c3425a0","tgt_lang":"it","translated":"Sessione","updated_at":"2026-04-29T17:38:30.670Z"}
|
||||
{"cache_key":"5ca6ef2491f72fde3f9359e1be0fe2af18ee8209265c96068d551a41436d0d2f","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.phrases.whisperingVectorStore","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"whispering to the vector store…","text_hash":"44f8f2666f20599ad12e2e33ea95c6f37c8a2b422bf438d4bdb59e778ae6a527","tgt_lang":"it","translated":"sussurri al vector store…","updated_at":"2026-04-29T17:38:21.878Z"}
|
||||
{"cache_key":"5ccf50df9e30d5d83ed365446e88ed2bbec1c8e7afc9bdee14b8a83e01b8e43b","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.bestEffortHelp","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Do not fail the job if delivery itself fails.","text_hash":"8918ef73561c96327b9a787e29004f468e5641b126fe2d28991df4020e5b7859","tgt_lang":"it","translated":"Non far fallire il processo se la consegna stessa non riesce.","updated_at":"2026-04-29T17:39:40.592Z"}
|
||||
{"cache_key":"5d88e6b59068ccb4485ddf34d11a20ea8d28b9213120a9921a8bdba56e47cf22","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"it","translated":"parziale","updated_at":"2026-05-03T18:28:41.603Z"}
|
||||
{"cache_key":"5db2594844e0b9c434292482cf45fdace01f3c1c9a8b4fce45d86726208b5836","model":"gpt-5.5","provider":"openai","segment_id":"debug.method","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Method","text_hash":"52a0f9b65b278850b53aad23136b5d574299e8fb92311304346d19736b7e9cce","tgt_lang":"it","translated":"Metodo","updated_at":"2026-04-29T19:26:49.629Z"}
|
||||
{"cache_key":"5e0348d97a42b9bc9735f9db512ac027239811047088ecf76547b1433c5734c3","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.schedule","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Schedule","text_hash":"f4830a1dae2980447c716bd4b5779b7013575ef09f70ef4731457218792487b3","tgt_lang":"it","translated":"Pianificazione","updated_at":"2026-04-29T17:39:24.886Z"}
|
||||
{"cache_key":"5e89f3d2e74b8e15136811fc86f1f959250da030ca1e7f183f9e4d992cdc7e6a","model":"gpt-5.5","provider":"openai","segment_id":"cron.runs.clear","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Clear","text_hash":"83b12c2216efb4fdc924e1deb5182e905e4926ed0c1c324d467107f46d5a26a9","tgt_lang":"it","translated":"Cancella","updated_at":"2026-04-29T17:39:17.442Z"}
|
||||
@@ -588,6 +591,7 @@
|
||||
{"cache_key":"9d95011a47d3f9952be90336254662ccebac1f43ca0bada63718bb8508b8a196","model":"gpt-5.5","provider":"openai","segment_id":"cron.jobState.last","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Last","text_hash":"eb970eb0951c6cdeac1ec0cc723fc91e30b0c26ee6f3b5ee0e574db7f487dc55","tgt_lang":"it","translated":"Ultimo","updated_at":"2026-04-29T17:39:49.212Z"}
|
||||
{"cache_key":"9dd2619d6dcf0cc3308deae5739648da70375005709d2be19bad7b1b552bd771","model":"gpt-5.5","provider":"openai","segment_id":"agents.files.editFile","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Edit file","text_hash":"9608dd142d9b10d7799422fe96eab7262a5db3de6edbb1fde660d74ddaa2617b","tgt_lang":"it","translated":"Modifica file","updated_at":"2026-04-29T19:26:42.188Z"}
|
||||
{"cache_key":"9ea9e3abf8ce9785ebf83e7570eacc98b05d9da920000f5c7c7ae6930d3a4d9f","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.selected","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"{count} selected","text_hash":"529aacfdfd2b17bf9fe56ebad9a24339a2d1151327dd420c52c5f163aeb9acc6","tgt_lang":"it","translated":"{count} selezionati","updated_at":"2026-04-29T20:14:41.034Z"}
|
||||
{"cache_key":"9ebd7991e429843da1af7cfbb82fba12693658840e5c14e5040f40ddc8d3a04b","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"it","translated":"aggiornamento in corso","updated_at":"2026-05-03T18:28:41.603Z"}
|
||||
{"cache_key":"9eeb15be964af258a78a5c23082db3fe3dd377c939f58f11915eb87237071806","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.loadingCheckpoints","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Loading checkpoints…","text_hash":"28f4a96c140d1effc48388a1f67e650dfcf892df7003d38cd0ebeab22d65ba34","tgt_lang":"it","translated":"Caricamento checkpoint…","updated_at":"2026-04-29T20:14:47.968Z"}
|
||||
{"cache_key":"9f7b49c0341ed5dde46ebd5ce7dd3bf86253f4666ec2194d7e3a3812654cab97","model":"gpt-5.5","provider":"openai","segment_id":"cron.errors.staggerAmountInvalid","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Stagger must be greater than 0.","text_hash":"4d3aefc4b3c8f5972553b956e503e31933ad74ce6538e8561bf2068c4ab96f86","tgt_lang":"it","translated":"Lo scaglionamento deve essere maggiore di 0.","updated_at":"2026-04-29T17:39:49.212Z"}
|
||||
{"cache_key":"9fabbefae9723592a76fc785a8954f2e91ce79e8bc745f77c15698eb35995854","model":"gpt-5.5","provider":"openai","segment_id":"chat.gatewayStatus","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Gateway status: {status}","text_hash":"5778a6ee172589bbd9027790e112d2f90264f86b112308924bf1acabc6b31935","tgt_lang":"it","translated":"Stato Gateway: {status}","updated_at":"2026-04-29T20:14:47.968Z"}
|
||||
@@ -628,6 +632,7 @@
|
||||
{"cache_key":"a8c1f02d56c15570a034e841802fd07169cb1e676fb59cb69f895594c4fb6ab1","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.channelHelp","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Choose which connected channel receives the summary.","text_hash":"65cb19d00d3ec2d597fac1e50da8d7926ca53a992b154d8e6b39aeacb632d1e4","tgt_lang":"it","translated":"Scegli quale canale connesso riceve il riepilogo.","updated_at":"2026-04-29T17:39:33.796Z"}
|
||||
{"cache_key":"a8d6a184700fccbd5d4292374feb443b17193dc46dee271bb47285231f61b701","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.stats.shortTerm","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Short-term","text_hash":"5bb852d4225d676aa64e8933284475ce54fd35d9535b4f5b4b37c42245112df0","tgt_lang":"it","translated":"A breve termine","updated_at":"2026-04-29T17:38:12.172Z"}
|
||||
{"cache_key":"a91e925de04882c6a2f4d7ac78270b4e17bd548ac5faaf5ed00dedc1c5cefb3f","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.seconds","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Seconds","text_hash":"381a8e9699052f3a958001510611a9634e7cef8aa6a1421cb7e7f6e119f91edc","tgt_lang":"it","translated":"Secondi","updated_at":"2026-04-29T17:39:40.592Z"}
|
||||
{"cache_key":"a942d41cabda7314a6241b294465b1cfe3488fc7b702afc40b192b69d094c041","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"it","translated":"{status}: {pending} in sospeso, {stale} obsoleti, {cached} memorizzati nella cache","updated_at":"2026-05-03T18:28:41.603Z"}
|
||||
{"cache_key":"a9ce10be10832be96ac2c637ba7771c180dcd1f92b244d32c7d800271d13c44a","model":"gpt-5.5","provider":"openai","segment_id":"common.cancel","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Cancel","text_hash":"19766ed6ccb2f4a32778eed80d1928d2c87a18d7c275ccb163ec6709d3eb2e27","tgt_lang":"it","translated":"Annulla","updated_at":"2026-04-29T17:37:06.761Z"}
|
||||
{"cache_key":"a9fa1b9d1a825d4b575c0de6ac6cb2a38aa4317968711b6ae97e4aec2c057a06","model":"gpt-5.5","provider":"openai","segment_id":"common.publicKey","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Public Key","text_hash":"a51af74c1dda1bf0f6a64455d747f7e14aa8cda977cbe7b26fb9d5323125d41a","tgt_lang":"it","translated":"Chiave pubblica","updated_at":"2026-04-29T17:37:09.924Z"}
|
||||
{"cache_key":"aa2da889b19cb3baeb4b44f777ce8be48f1e44c2f98ff3095279b1b8681035e6","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.scene.dedupeDiary","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Dedupe Diary","text_hash":"805725ab08dda39943858e1ed241464dc23bc100fac04ce55d0f14a6009d06e4","tgt_lang":"it","translated":"Deduplica diario","updated_at":"2026-04-29T17:38:08.298Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:13:45.134Z",
|
||||
"generatedAt": "2026-05-03T18:28:28.581Z",
|
||||
"locale": "ja-JP",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -250,6 +250,7 @@
|
||||
{"cache_key":"45c0d83c5aaeac0a993b8c4a506839f865881a2657096eb1acd74cda2ac50695","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.docsHint","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"For remote access, Tailscale Serve is recommended. ","text_hash":"9ac5daefac37fc5d6fdeb9dc835c0dac1be1e27fa893c7371384a76f7cb2a21a","tgt_lang":"ja-JP","translated":"リモートアクセスには、Tailscale Serve を推奨します。 ","updated_at":"2026-04-05T17:13:04.353Z"}
|
||||
{"cache_key":"4664f2160408e2254da9e91066203abde4cebfb33b2f72e5cafb68498bd7d41a","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.tokensPerMinute","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"tok/min","text_hash":"313de81ab59056211afd431da067fe437d905d9f29f51d64b016222a777c9526","tgt_lang":"ja-JP","translated":"tok/分","updated_at":"2026-04-06T02:59:40.579Z"}
|
||||
{"cache_key":"46ec0eb7c138099b3801334de3c74f30e2350c600a8e6701c8deb52b0fbcac02","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.toolResult","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Tool result","text_hash":"9bb620efa692f707a302a5f42464015a54c20843e2f76f18a1542626b886bb91","tgt_lang":"ja-JP","translated":"ツール結果","updated_at":"2026-04-05T17:13:29.278Z"}
|
||||
{"cache_key":"474ada81f93a4b7e03ff264ea3eae823abfa8db7b075398c4c6666cdb1676ea6","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"ja-JP","translated":"{status}: 保留中 {pending}、古い {stale}、キャッシュ済み {cached}","updated_at":"2026-05-03T18:28:28.429Z"}
|
||||
{"cache_key":"47d0b113b95989c93d14ddd212f50890a78b734a7551be58632a9fdae586b5df","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.minutesPlaceholder","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"min","text_hash":"1f6fa6f69d185e6086d04e7330361bf9001a3b8d0ce511171055dc34eb90c1c5","tgt_lang":"ja-JP","translated":"分","updated_at":"2026-04-29T20:13:27.701Z"}
|
||||
{"cache_key":"47e2914f2334b07ab3179a5c3c58517e2079a03d4453c1e458223302fd5aec3c","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.sessionsInRange","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"of {count} in range","text_hash":"6e63cea82a473651b00fb46a523cb60e7aeb7a937012c33f46313e28fc685a44","tgt_lang":"ja-JP","translated":"範囲内 {count} 件中","updated_at":"2026-04-05T17:13:20.304Z"}
|
||||
{"cache_key":"47f1de8689a30eb0e7ea0fde5a3a0bcd127c868d0a6c3a0f650f7649e7e70c47","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.usernameHelp","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Short username (e.g., satoshi)","text_hash":"5e91f6b09039a459d4574c826d4280878ff019aeb382aa65e96c108472df0acf","tgt_lang":"ja-JP","translated":"短いユーザー名(例: satoshi)","updated_at":"2026-04-06T02:49:04.953Z"}
|
||||
@@ -369,6 +370,7 @@
|
||||
{"cache_key":"708d297ae1875937ed1067a1b354d3de6e6e1611db55267e13b4c231cfc9d748","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.description","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Description","text_hash":"526e0087cc3f254d9f86f6c7d8e23d954c4dfda2b312efc29194ae8a860106ba","tgt_lang":"ja-JP","translated":"説明","updated_at":"2026-04-05T17:13:47.126Z"}
|
||||
{"cache_key":"70e4fcbcc916d0729416666abc4ca8e89dbba75d8ef445d9e021c19c2a7299b9","model":"gpt-5.4","provider":"openai","segment_id":"overview.pairing.hint","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"This device needs pairing approval from the gateway host.","text_hash":"1c3a9aa99bddad152ac9e8c02839f75c1aa5e55577934a3b541c6ad540923d75","tgt_lang":"ja-JP","translated":"このデバイスは Gateway ホストからのペアリング承認が必要です。","updated_at":"2026-04-05T17:13:01.469Z"}
|
||||
{"cache_key":"712a1e7c8f386d952af08435cc015eac72f98e10d776739ed68955dee1646618","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.phrases.whisperingVectorStore","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"whispering to the vector store…","text_hash":"44f8f2666f20599ad12e2e33ea95c6f37c8a2b422bf438d4bdb59e778ae6a527","tgt_lang":"ja-JP","translated":"ベクトルストアにささやきかけ中…","updated_at":"2026-04-06T02:49:26.589Z"}
|
||||
{"cache_key":"7144782ecd6963dca118d655d361163fdc84c14186acd0a85a6d38cb1fac7141","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"ja-JP","translated":"使用状況キャッシュをバックグラウンドで再構築しています。表示される合計は古い可能性があります。","updated_at":"2026-05-03T18:28:28.429Z"}
|
||||
{"cache_key":"7170b228faa155249590fad936f2f76e31f3e92b8ae5f7299f1d772e70db78c0","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.deliveryNotRequested","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Not requested","text_hash":"2bb186b55caf8791978bf5137df84ff6bf7e8110db38db6c85c1485679e8e679","tgt_lang":"ja-JP","translated":"未要求","updated_at":"2026-04-05T17:13:43.793Z"}
|
||||
{"cache_key":"717e31fcbdc1fdcb88e3a826b41454019bc819e9115e3d8f304b590299e70e18","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobList.edit","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Edit","text_hash":"464c4ffd019e1e9691dcf0537c797353ef2b1c1d4833d3d463e5b74ae4547344","tgt_lang":"ja-JP","translated":"編集","updated_at":"2026-04-05T17:14:03.377Z"}
|
||||
{"cache_key":"71f431da6d529634da6e9140bb5f4097f0a8e5e722e45fa9d0ac2ab60f1da7ca","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.phrases.forgettingNoise","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"forgetting what doesn't matter…","text_hash":"b1682b9653c2540fd575cc52cbf7c2e68d8fc54b3987c593f2b94fe4a6a8fc5a","tgt_lang":"ja-JP","translated":"重要でないことを忘れ中…","updated_at":"2026-04-06T02:49:26.589Z"}
|
||||
@@ -507,6 +509,7 @@
|
||||
{"cache_key":"9741b4910935bed9a8f61ac834a7cb55a626f03e2e643cfef15fd354cf97039c","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.title","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Usage Overview","text_hash":"4e59a10f60e0e162e55c1c8399a7bc68792b9120c5f57b11f522afd6d0f1971e","tgt_lang":"ja-JP","translated":"使用状況の概要","updated_at":"2026-04-05T17:13:16.725Z"}
|
||||
{"cache_key":"975835101e4b66c8cd1c5e424406fa686f361610f72f8902eba6b40e7023787b","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.bannerHelp","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"HTTPS URL to a banner image","text_hash":"5feb792028cf20b11294d2bed052e34770970d0a8a991fdc8eeb39045a9c42ca","tgt_lang":"ja-JP","translated":"バナー画像への HTTPS URL","updated_at":"2026-04-06T02:49:04.953Z"}
|
||||
{"cache_key":"97fd56ee9e5dfd56ac3b624611e354d767205d737afeb64832af2d6899f8cee2","model":"gpt-5.4","provider":"openai","segment_id":"common.health","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Health","text_hash":"55898449eb74fb2e348d13e5a5d84ab019bb87ea92687b50b3d3302eb409b784","tgt_lang":"ja-JP","translated":"健全性","updated_at":"2026-04-05T17:12:45.373Z"}
|
||||
{"cache_key":"992882bd6acf5741a6235e7b144857841e2af985ef6c808eb0321351b714ad9a","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"ja-JP","translated":"一部","updated_at":"2026-05-03T18:28:28.429Z"}
|
||||
{"cache_key":"993f85d1a8dc344567e7b5422157e7d35d59df0b2801d9037386dfadc341d1f0","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobs.lastRun","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Last run","text_hash":"512a48218ba2179153629504206e7d54a7767e19ee2aa21574a7c614e5c92537","tgt_lang":"ja-JP","translated":"前回の実行","updated_at":"2026-04-05T17:13:38.296Z"}
|
||||
{"cache_key":"99655e9259df82487233dca6643bb2083e82be948f94cada436d502d237cd1e3","model":"gpt-5.4","provider":"openai","segment_id":"common.connected","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Connected","text_hash":"22965568d22a14ee17af055d2870b50afcfe9fd94a83eec3196e266932297bb2","tgt_lang":"ja-JP","translated":"接続済み","updated_at":"2026-04-06T02:48:54.503Z"}
|
||||
{"cache_key":"998bf615a7e072d8c7b862c1bd29fe91bf69ca2db41bcb2b0bfbc5c80fa2a954","model":"gpt-5.4","provider":"openai","segment_id":"overview.snapshot.status","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Status","text_hash":"920e413c7d411b61ef3e8c63b1cb6ad058d5f95f8b481dbafe60248387d8c355","tgt_lang":"ja-JP","translated":"ステータス","updated_at":"2026-04-05T17:12:55.784Z"}
|
||||
@@ -570,6 +573,7 @@
|
||||
{"cache_key":"abd23e20fa8144e3ef1246403762747ecd08307ca03a1876f9a3b7312509ef0a","model":"gpt-5.4","provider":"openai","segment_id":"overview.access.togglePasswordVisibility","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Toggle password visibility","text_hash":"1016c07b0f58d365790cc799fb215afd92fde1aeb5ac47cd17260e327465b2d6","tgt_lang":"ja-JP","translated":"パスワードの表示/非表示を切り替え","updated_at":"2026-04-20T06:26:30.900Z"}
|
||||
{"cache_key":"ac90723f29ea65a52c674ab3f325e5dd760501c3d88e718ef4abe548b9bc1210","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.scene.clearGrounded","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Clear Grounded","text_hash":"9d643608d2334885c6dfee865cacda8bc0d01f1a099b4ec8d710f3896f3e5091","tgt_lang":"ja-JP","translated":"グラウンデッドをクリア","updated_at":"2026-04-08T22:27:51.616Z"}
|
||||
{"cache_key":"acd682d1d19dba60bb45e192f82ac86cfb6dd3dc6da61d22e67fa1dbf82f4096","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.messages","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Messages","text_hash":"04d7b48339271ea67d3c8493e07e90bc68dc565485eebe5e0b67c21c1586e3c0","tgt_lang":"ja-JP","translated":"メッセージ","updated_at":"2026-04-05T17:13:16.725Z"}
|
||||
{"cache_key":"ace89a8465089f61314961df347bb4f18997b8890a277d6242bac38081c455a4","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"ja-JP","translated":"更新中","updated_at":"2026-05-03T18:28:28.429Z"}
|
||||
{"cache_key":"adf111b8ce460b241dd373625f4e03b4517de92b8ed2761859d15dc47be16094","model":"gpt-5.4","provider":"openai","segment_id":"cron.errors.invalidRunTime","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Invalid run time.","text_hash":"51465fa3cb94966411a49d8d1972fe997ac028fd249e05df55db8a2179975b48","tgt_lang":"ja-JP","translated":"無効な実行時刻です。","updated_at":"2026-04-05T17:14:09.401Z"}
|
||||
{"cache_key":"ae380403954b592da555818b38a17a220014c15350952d0d331a09f3f3753ad6","model":"gpt-5.4","provider":"openai","segment_id":"common.theme","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Theme","text_hash":"efb52e7172b77731d996ff4f51cd7b3dcfd55fc6f07392994619418d58d170dd","tgt_lang":"ja-JP","translated":"テーマ","updated_at":"2026-04-05T17:12:45.374Z"}
|
||||
{"cache_key":"ae51979e80a0c8cea0f21f0061940b8e91ea2001ef608187ddd01a7b70997c5c","model":"gpt-5.4","provider":"openai","segment_id":"cron.errors.agentMessageRequiredShort","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Agent message required.","text_hash":"d1709c155073bef73f53c7f372f797c41348e86bcb38d278a3cc3dfd8682f29b","tgt_lang":"ja-JP","translated":"エージェントメッセージは必須です。","updated_at":"2026-04-05T17:14:09.401Z"}
|
||||
@@ -719,6 +723,7 @@
|
||||
{"cache_key":"df3992b0c611c1359a1ae2fe3c8268b635f0ead8f21d0cfece6661cccf3cda7b","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.skills","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Skills","text_hash":"66d0f523a379b2de6f8d5fba3a817ebc395f7bcaa54cc132ca9dfa665d1e9378","tgt_lang":"ja-JP","translated":"Skills","updated_at":"2026-04-06T02:59:40.579Z"}
|
||||
{"cache_key":"df85aa72c7bf2108e5c6d1465f5229a58d9fa5469d5757b116665c02bdeccc2c","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.status.nextSweepPrefix","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"next sweep","text_hash":"836b65b782a40d015ac29fa976e399ea979cc1c659c551f5de304c4004ed8dd4","tgt_lang":"ja-JP","translated":"次のスイープ","updated_at":"2026-04-06T02:49:12.363Z"}
|
||||
{"cache_key":"df8de8914c9ef824a97d986dadb377760940e196fdec3ea69b3c0a2212a9b440","model":"gpt-5.4","provider":"openai","segment_id":"nav.chat","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Chat","text_hash":"460b3a7da007b7af9d35bca54181dc91382263b2bf133ca214871ca1fed1fc1c","tgt_lang":"ja-JP","translated":"チャット","updated_at":"2026-04-05T17:12:45.374Z"}
|
||||
{"cache_key":"e0006be9b83883144387010b72395a6c7248a9bc931e4d6eba52676cd27a3419","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"ja-JP","translated":"古い","updated_at":"2026-05-03T18:28:28.429Z"}
|
||||
{"cache_key":"e09f16f451b5260523812b757c5c441df48154d5d0122c9311e864994b1655e4","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.fourPm","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"4pm","text_hash":"6672b306c3e94cfd5b2e3c089a8904c7e213658513785372a8e2f27168597b6a","tgt_lang":"ja-JP","translated":"午後4時","updated_at":"2026-04-05T17:13:32.560Z"}
|
||||
{"cache_key":"e0a6efa1361d4bf934ef3e8a004b613abeaae0c705b5e094ae60d0e94fa5e550","model":"gpt-5.5","provider":"openai","segment_id":"common.back","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Back","text_hash":"76900f1bfd16c8d4dd3d25e6f46638d7165aee23883ccea6bfe071c514421769","tgt_lang":"ja-JP","translated":"戻る","updated_at":"2026-04-29T20:13:27.700Z"}
|
||||
{"cache_key":"e0bf56e7003c4376202661d80fb33f35a6a82cb991a970e96ca91af0a3fa48da","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.docsLink","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Read the docs →","text_hash":"412b59669150e05afaf4671cae2d9708750732c55d290efffeec7dcf7fef80e7","tgt_lang":"ja-JP","translated":"ドキュメントを読む →","updated_at":"2026-04-05T17:13:04.353Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:14:03.499Z",
|
||||
"generatedAt": "2026-05-03T18:28:31.698Z",
|
||||
"locale": "ko",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -183,6 +183,7 @@
|
||||
{"cache_key":"357f4403e51f11b5e004ac97dc3b353184c32f7ffe25d5eb53b70f2d1b8fe138","model":"gpt-5.4","provider":"openai","segment_id":"nodes.binding.execNodeBindingSubtitle","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Pin agents to a specific node when using exec host=node.","text_hash":"62b94f448115db671d89cd6cbb1649576ab8435e99aabee84d4bf32e7882f65e","tgt_lang":"ko","translated":"exec host=node를 사용할 때 에이전트를 특정 노드에 고정합니다.","updated_at":"2026-04-06T02:49:23.594Z"}
|
||||
{"cache_key":"35b74500fc304ceb9865158ec9eceabc2936259e698c8f6e9a0bb14fcd5ad70d","model":"gpt-5.4","provider":"openai","segment_id":"login.togglePasswordVisibility","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Toggle password visibility","text_hash":"1016c07b0f58d365790cc799fb215afd92fde1aeb5ac47cd17260e327465b2d6","tgt_lang":"ko","translated":"비밀번호 표시 여부 전환","updated_at":"2026-04-20T06:30:01.763Z"}
|
||||
{"cache_key":"360bcacdd11ffd3bade4a3e93b81784b61a87fbd3a10c75804f1e8c67c911543","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.originMixed","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"mixed","text_hash":"3f8fee624f43b2a9d685353269a0ab3eac785863ab6227636db1060fba1855e0","tgt_lang":"ko","translated":"혼합","updated_at":"2026-04-10T07:59:09.199Z"}
|
||||
{"cache_key":"362619abef2774236d4b2c48a784aba8b6e82afa4b6c31872dd0005414b296f7","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"ko","translated":"오래됨","updated_at":"2026-05-03T18:28:31.546Z"}
|
||||
{"cache_key":"368f7085cdd3c2e0ffd7f2e51738c3ef0e5a45e73b487796ce1abfda9687b121","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.deliverySub","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Choose where run summaries are sent.","text_hash":"575d1babab75396c94a9f01f9a64a7f1f156b8d0efca48211903259eaad5a1d9","tgt_lang":"ko","translated":"실행 요약을 보낼 위치를 선택하세요.","updated_at":"2026-04-05T17:15:00.492Z"}
|
||||
{"cache_key":"36b1ae8484786c48ea1a0734e46b9cfde71cf7956d30740e627aab9745b6d3e5","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.assistantTaskPrompt","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Assistant task prompt","text_hash":"eae69a35d4c19250d0b7b64f79fc60a3e461cd02d085df3bf8079852fe42df91","tgt_lang":"ko","translated":"어시스턴트 작업 프롬프트","updated_at":"2026-04-05T17:15:00.492Z"}
|
||||
{"cache_key":"36cdea7f83e16cd2466e1dffca719415fcbb55da3aef3f4b2a21e45016db3c7f","model":"gpt-5.4","provider":"openai","segment_id":"common.importFromRelays","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Import from Relays","text_hash":"b6a7b8934731285270b7f1671978dc0fc3147998f52405b2cc418eb4927bfc99","tgt_lang":"ko","translated":"Relays에서 가져오기","updated_at":"2026-04-06T02:49:08.511Z"}
|
||||
@@ -198,6 +199,7 @@
|
||||
{"cache_key":"39fb12de03a91213e656e20082e34c256656e57dbe16817e6d41d37c7d265ae7","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.namePlaceholder","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Morning brief","text_hash":"c6aa9cd74d6a54a6dcee824d7c8011da5e4f2e09781c10ab651db21607b558c6","tgt_lang":"ko","translated":"아침 브리핑","updated_at":"2026-04-05T17:14:51.552Z"}
|
||||
{"cache_key":"3a23da12216bd3db71ef5c589685c34528cf93a9c346c9c2b92174605c204b70","model":"gpt-5.5","provider":"openai","segment_id":"agents.context.runtime","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Runtime","text_hash":"1093115897879aa3ad9511a1dc2850929cfb60ba45ec741605f69f5d20203472","tgt_lang":"ko","translated":"런타임","updated_at":"2026-04-29T19:25:39.947Z"}
|
||||
{"cache_key":"3b4bd2390554c0df247eefaa672288a62f9e57b30335be1063a8abaa9f356085","model":"gpt-5.4","provider":"openai","segment_id":"nodes.binding.defaultBindingHint","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Used when agents do not override a node binding.","text_hash":"a61df1a47c1edd595446e4954df0f8a0a3f84ee01ad399ef66c92cf03a75826d","tgt_lang":"ko","translated":"에이전트가 노드 바인딩을 재정의하지 않을 때 사용됩니다.","updated_at":"2026-04-06T02:49:23.594Z"}
|
||||
{"cache_key":"3b50b79a33d69287357970169f35fbb22680e9e849d584a31eab2d2b9e9e83f1","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"ko","translated":"부분적","updated_at":"2026-05-03T18:28:31.546Z"}
|
||||
{"cache_key":"3b72c2f6533d4a5c3d8cb8b382cfb36da0d3ccb7c681478d4b43fa957a2792c6","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.noProfileHint","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Click \"Edit Profile\" to add your name, bio, and avatar.","text_hash":"01b132f60532b898c87043251eb68a551295f000ea0550fa9d9cda65e6a7fcd5","tgt_lang":"ko","translated":"\"Edit Profile\"을 클릭하여 이름, 소개, 아바타를 추가하세요.","updated_at":"2026-04-06T02:49:13.176Z"}
|
||||
{"cache_key":"3ba9440b665b6f3e9dcd19fac5d1f65f0b17d22d360a8980576f382be60a1ea3","model":"gpt-5.4","provider":"openai","segment_id":"channels.health.noSnapshotYet","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"No snapshot yet.","text_hash":"3b578b0bf270913e649934e72f7ef6584ed56b1e10dc563b541384ff660bbfbc","tgt_lang":"ko","translated":"아직 스냅샷이 없습니다.","updated_at":"2026-04-06T02:49:13.176Z"}
|
||||
{"cache_key":"3bda5d93f45bcdcc4e05ada62b05720397caf28fd07787afc8a218bdd26dbbea","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.key","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Key","text_hash":"99a52df3ff3d499488e2fa28150c4106a2cb5e928891a830a9aa3922b2d32160","tgt_lang":"ko","translated":"키","updated_at":"2026-04-29T20:13:51.114Z"}
|
||||
@@ -227,6 +229,7 @@
|
||||
{"cache_key":"44144e3c5d33ad81a7d55b27bb1fdf6ea7a8fa2f2082242f023da73e88b6256d","model":"gpt-5.4","provider":"openai","segment_id":"agentTools.builtIn","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Built-in","text_hash":"1f43948106d1d47fef7b0afa5c60be05f7334dc4fe43a0b77d8716ef6ec22611","tgt_lang":"ko","translated":"내장","updated_at":"2026-04-06T02:49:26.950Z"}
|
||||
{"cache_key":"443f1d748157179e31862cd78318e560b43af2b15b4941ddab6dd6288767fe19","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.noAgentData","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"No agent data","text_hash":"a40dc61b67f59dc2113e56ffa5b63c02fccdcfc344f6defedc45fa9189ea4611","tgt_lang":"ko","translated":"에이전트 데이터 없음","updated_at":"2026-04-05T17:14:24.502Z"}
|
||||
{"cache_key":"45b8640247808f73a73b3bea483b433818a04e5876229eceebf822c67667da37","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.updated","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Updated","text_hash":"3a5ecca188c0579c00ee24cf3cab21bd02c15a06f7a70cc8e0a8ff2381dcbbfd","tgt_lang":"ko","translated":"업데이트됨","updated_at":"2026-04-29T20:13:51.114Z"}
|
||||
{"cache_key":"45e79d8c089df94032006d59d1cf3455ecce7dda67899cede6e20cd21967d21d","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"ko","translated":"{status}: 대기 중 {pending}, 오래됨 {stale}, 캐시됨 {cached}","updated_at":"2026-05-03T18:28:31.546Z"}
|
||||
{"cache_key":"461bc36d63be37850d69dcbcfa971855b504c2e50757cac9b04d44659dd626f4","model":"gpt-5.4","provider":"openai","segment_id":"subtitles.chat","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Gateway chat for quick interventions.","text_hash":"21296a7a8d725afc38e01df21bfd249bd2a3da77b38b522634983b2bbe1eaa94","tgt_lang":"ko","translated":"빠른 개입을 위한 Gateway 채팅.","updated_at":"2026-04-05T17:13:19.517Z"}
|
||||
{"cache_key":"4644af723a85ba48d13f15e108521d8411a55d2871939498eb73e9f3bb73801a","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.avgTokens","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Avg Tokens / Msg","text_hash":"1f05d402adffc61f856e1a7635fe233c07b897448cae656802b70f7b3c521c88","tgt_lang":"ko","translated":"메시지당 평균 토큰","updated_at":"2026-04-05T17:14:18.004Z"}
|
||||
{"cache_key":"46c0a5944722ebe096a0fc6a99dac4c10ee0d52731be68e5e98b48c036eb8157","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.minutesPlaceholder","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"min","text_hash":"1f6fa6f69d185e6086d04e7330361bf9001a3b8d0ce511171055dc34eb90c1c5","tgt_lang":"ko","translated":"분","updated_at":"2026-04-29T20:13:48.145Z"}
|
||||
@@ -268,6 +271,7 @@
|
||||
{"cache_key":"5173da04b63dcebd5f5ff85695a9a6b36dde76e95fdbd4fdcef1aa82806f77a4","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.required","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Required","text_hash":"4850b174b713d88cfc63de107830d5388929020e78abc91fc19bba7a6821625f","tgt_lang":"ko","translated":"필수","updated_at":"2026-04-05T17:14:51.552Z"}
|
||||
{"cache_key":"51bad75babe5495e193f4875da1891a4f6a8e6705124eb9a538fb439ae96bf47","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.recent","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Recently viewed","text_hash":"8e445e8aa6d23a303c6d6005453d8bb379e5ce63137031f10bed3d257d2fbf2d","tgt_lang":"ko","translated":"최근 본 항목","updated_at":"2026-04-05T17:14:24.502Z"}
|
||||
{"cache_key":"51d162017ffd04c0d4e298849a654df7312568f09e878d76c4f258e4c8aa4ae4","model":"gpt-5.4","provider":"openai","segment_id":"cron.summary.enabled","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Enabled","text_hash":"92c1cdfdf4cb9cf6fcca962f206de36fd5d60db1178bc9461052f8de703a0e06","tgt_lang":"ko","translated":"사용","updated_at":"2026-04-05T17:14:40.640Z"}
|
||||
{"cache_key":"51e12c108ada7f580470fb84935e9d71fa3d7829ed4b3b5eb6f9c081ea5f1ec8","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"ko","translated":"새로 고치는 중","updated_at":"2026-05-03T18:28:31.546Z"}
|
||||
{"cache_key":"51e403794874ca651e44ef9d163f1330976e42a036750cf124c44294f09bff55","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.subtitleEmpty","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Estimates require session timestamps.","text_hash":"242d30713d9b93113fb26af72f562aab6200824db8395f314351cfcbe0a164f0","tgt_lang":"ko","translated":"추정에는 세션 타임스탬프가 필요합니다.","updated_at":"2026-04-05T17:14:34.546Z"}
|
||||
{"cache_key":"51f0821275898596497799860f645b0f118bf638144d03baae20645ba20cfa3f","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.store","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Store: {path}","text_hash":"34c2bb64fd056d14ce239e1eb7de1ba8a27a2d3f2a293afdecd5088137e61b9f","tgt_lang":"ko","translated":"저장소: {path}","updated_at":"2026-04-29T20:13:48.145Z"}
|
||||
{"cache_key":"52b374d9bc785b34ce27e88055aa812b89a3c06a4890fc190241796a08c79712","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.delivery.notify.description","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Deliver results to chat","text_hash":"2c52a24163167b77889acbbf34defbdaf4ca334db34c25c133c139e5152ad86d","tgt_lang":"ko","translated":"결과를 채팅으로 전달","updated_at":"2026-04-29T20:13:59.874Z"}
|
||||
@@ -452,6 +456,7 @@
|
||||
{"cache_key":"88b69d398ca744455011ac911a25eba45a8a3dab3fd4c4716ba85ece8c02eb39","model":"gpt-5.4","provider":"openai","segment_id":"common.probe","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Probe","text_hash":"3bd51ab9c14f9514ea37fac91f5f245e93cf5733bd39ca1652e5525a1d67b5d1","tgt_lang":"ko","translated":"프로브","updated_at":"2026-04-06T02:49:05.345Z"}
|
||||
{"cache_key":"88c8674b024472efe9f032685c23a48948a7b104b3a6cf60b9af69e6afaa813b","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.limitReached","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Showing first 1,000 sessions. Narrow date range for complete results.","text_hash":"677fc1d231d5e3a14126ba368b8c3c78db7b9ffafdd98259af67c64c07a4aa73","tgt_lang":"ko","translated":"처음 1,000개 세션만 표시됩니다. 전체 결과를 보려면 날짜 범위를 좁히세요.","updated_at":"2026-04-05T17:14:28.018Z"}
|
||||
{"cache_key":"89257660ed138bb5507b63f79af69ec67dceeb7a263160cee3afdcde1da82f59","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.emptyShortTerm","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"No short-term entries to inspect.","text_hash":"2da0eeafc31b59fa5ff2c473c82b4d2589378ff500e4e06d5daad8ce3988a6e9","tgt_lang":"ko","translated":"검토할 단기 항목이 없습니다.","updated_at":"2026-04-10T07:59:11.273Z"}
|
||||
{"cache_key":"893ac97afee1ffd0d42ec95c40283f3d101801729a0d3c47b01e98fdbb751097","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"ko","translated":"사용량 캐시가 백그라운드에서 다시 빌드되고 있습니다. 표시된 합계가 최신이 아닐 수 있습니다.","updated_at":"2026-05-03T18:28:31.546Z"}
|
||||
{"cache_key":"897aa61d8d487aa54df9fde6e16821567c1bdea8f3247df5e33bea68ece451f0","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.thinking","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Thinking","text_hash":"a20d12c5e9c428c398b9d25e4dded1d6d3e599184e38b4d37bcb9d2d595ff8f7","tgt_lang":"ko","translated":"생각 수준","updated_at":"2026-04-06T02:59:53.002Z"}
|
||||
{"cache_key":"89dfec4d25160504ea4bba5b4b8085971db8acff957c4cc2f5852d57f50b4103","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.pinned","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Pinned","text_hash":"f20c879465551f0d1457a13d4390d0f1ece456b115d75463169c5d55341b9b1e","tgt_lang":"ko","translated":"고정됨","updated_at":"2026-04-05T17:14:06.820Z"}
|
||||
{"cache_key":"8a0719e96e50024a855a8175697e88402ff5628fd74f420524a5388a09a41497","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.systemEventHelp","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Sends your text to the gateway main timeline (good for reminders/triggers).","text_hash":"284a601bd74ca50e61fcf8ec9749af44936ad445a6098d38c63090b731b46508","tgt_lang":"ko","translated":"텍스트를 gateway 메인 타임라인으로 보냅니다(알림/트리거에 적합).","updated_at":"2026-04-05T17:15:00.492Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:17:33.427Z",
|
||||
"generatedAt": "2026-05-03T18:29:04.694Z",
|
||||
"locale": "nl",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
{"cache_key":"4173b191151544bd6f626842b6ab0b16b1d8a880f2b6b27d0c0cd494dd3b5c67","model":"gpt-5.5","provider":"openai","segment_id":"usage.breakdown.cacheRead","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Cache Read","text_hash":"bc60bc6b4e59a4e37809ce2aea0b21366e9682d3ad5e14a64e639efc0b9f269f","tgt_lang":"nl","translated":"Cache lezen","updated_at":"2026-04-29T17:40:58.905Z"}
|
||||
{"cache_key":"41b6104e1afc1d37da1818867e957d0da0418023d6833ec810b68a85b937d27c","model":"gpt-5.5","provider":"openai","segment_id":"usage.filters.model","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Model","text_hash":"5e2c614c23f02239bc03c6c04fcb681950f9e72bf8fdff6be79c79841cbb10c0","tgt_lang":"nl","translated":"Model","updated_at":"2026-04-29T17:40:55.440Z"}
|
||||
{"cache_key":"41cb53188efe9145be7571eeda66e9fd42a4a7545e345dd6f21a2b27c41ffed1","model":"gpt-5.5","provider":"openai","segment_id":"chat.updateAvailable","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Update available:","text_hash":"45a520c33383a467930d2e84d8d524a630ecaadf2f418b14aee5060ba1d9edd0","tgt_lang":"nl","translated":"Update beschikbaar:","updated_at":"2026-04-29T20:17:24.464Z"}
|
||||
{"cache_key":"420994f3df9e8c9414e18dbccebc3c15877122b1fd8de17051da691346a3b773","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"nl","translated":"Gebruikscache wordt op de achtergrond opnieuw opgebouwd. Weergegeven totalen kunnen verouderd zijn.","updated_at":"2026-05-03T18:29:04.543Z"}
|
||||
{"cache_key":"42a89b292909aff631e980478a968fe5147c3a407fc8421d9b51f767da110619","model":"gpt-5.5","provider":"openai","segment_id":"usage.filters.pin","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Pin","text_hash":"ff1cee74414621d812efa8f77a6024850158c209fba6158772088703c2a02ff9","tgt_lang":"nl","translated":"Vastzetten","updated_at":"2026-04-29T17:40:52.013Z"}
|
||||
{"cache_key":"42cb66444517df33d265f04ef1fe55abe18ad7d51d91934fa90544a65567435e","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.title","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Usage Overview","text_hash":"4e59a10f60e0e162e55c1c8399a7bc68792b9120c5f57b11f522afd6d0f1971e","tgt_lang":"nl","translated":"Gebruiksoverzicht","updated_at":"2026-04-29T17:41:02.671Z"}
|
||||
{"cache_key":"432807dad42cb941031543c5d0001931036837279d7682dc806ed90edc961cb3","model":"gpt-5.5","provider":"openai","segment_id":"agents.setDefault","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Set Default","text_hash":"c365f1cb6d8e84e7476450255ffb4dd9360ed4a895c83b5378238bcc764e39f8","tgt_lang":"nl","translated":"Als standaard instellen","updated_at":"2026-04-29T19:28:35.815Z"}
|
||||
@@ -306,6 +307,7 @@
|
||||
{"cache_key":"511e5de4ded876b1aba86adb403cc6cd60f67a0bb10c059c5b4e26e4170579b1","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.defaultOption","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Default ({value})","text_hash":"a9d6571117890ef77ecc72f77ba43e9d8b05ed82c1c64ff27a352c02dff3c2bd","tgt_lang":"nl","translated":"Standaard ({value})","updated_at":"2026-04-29T20:17:17.809Z"}
|
||||
{"cache_key":"514b47a6f1636132de2dbde1dcc44b42bd637f1ce94af947bda896401bd7e8df","model":"gpt-5.5","provider":"openai","segment_id":"overview.connection.step2","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Get a tokenized dashboard URL:","text_hash":"c697a6e03fa9ac7f8036204eb6c2a95a143a4de97961318cb00b3e5c039b1794","tgt_lang":"nl","translated":"Haal een dashboard-URL met token op:","updated_at":"2026-04-29T17:40:22.936Z"}
|
||||
{"cache_key":"51559895383a55fcad74404d27a5b7ccf6cd9439692783e2b03868bb7990c365","model":"gpt-5.5","provider":"openai","segment_id":"agents.files.willCreateOnSave","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Will Create on Save","text_hash":"b643a88a93743af7349db462040f355dab1f98007a7b98f7e7bbe07b50b7e068","tgt_lang":"nl","translated":"Wordt aangemaakt bij opslaan","updated_at":"2026-04-29T19:28:50.601Z"}
|
||||
{"cache_key":"5156182424275e5f9fc997cff092a0b90e8ddcde9595c39c326f77adfbf245e2","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"nl","translated":"verversen","updated_at":"2026-05-03T18:29:04.543Z"}
|
||||
{"cache_key":"5177c835ddd0c7b33039058809558100661edd21fb0c37e831ab6c623fe62665","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.hideCheckpoints","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Hide checkpoints","text_hash":"b98865f6aa3e2763060bd7d3396568aefd21a78b926098424138058a461c4462","tgt_lang":"nl","translated":"Controlepunten verbergen","updated_at":"2026-04-29T20:17:24.464Z"}
|
||||
{"cache_key":"5177cbed20420f265584fdf66bb04be79793bfe03c08c43a8a3ed1a6a14bfacf","model":"gpt-5.5","provider":"openai","segment_id":"cron.jobs.title","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Jobs","text_hash":"2f17a0f8d518e491c5a0c490b2c1991828dd87d173994ba40996e1da59d4e368","tgt_lang":"nl","translated":"Taken","updated_at":"2026-04-29T17:41:29.439Z"}
|
||||
{"cache_key":"5179c9595cf5248e17aa5f6844532fc3c33aeeb810e23db0a0d2b135e8098edd","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.phrases.nurturingInsights","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"nurturing fledgling insights…","text_hash":"da5f6e65f6de5a90400e5c1a810989556b06996de08e3fa459a4ed21b9b59d78","tgt_lang":"nl","translated":"prille inzichten koesteren…","updated_at":"2026-04-29T17:40:49.535Z"}
|
||||
@@ -432,6 +434,7 @@
|
||||
{"cache_key":"70e47e6c97e464a69e8204a3b62678d7964a545f552eaa677ffd3461f97ad87d","model":"gpt-5.5","provider":"openai","segment_id":"cron.runs.deliveryDelivered","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Delivered","text_hash":"906115657390f3675639f46a572eee069155214169a45be4046933527a95c67b","tgt_lang":"nl","translated":"Geleverd","updated_at":"2026-04-29T17:41:38.443Z"}
|
||||
{"cache_key":"70e9ba58b848c7dac89dcd251a220489c36a14a6bd1ae6e02d209bcc5dc819fb","model":"gpt-5.5","provider":"openai","segment_id":"agents.files.expandPreview","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Expand preview","text_hash":"59edd3fe9cc5d5b4980b94efbaf2f17751850c33f77cda11c389998da87ae850","tgt_lang":"nl","translated":"Preview uitvouwen","updated_at":"2026-04-29T19:28:46.675Z"}
|
||||
{"cache_key":"71637936fb615f1a8bcfed2610fd948645e79a2dd002d1a83ee4ef200bdae1ae","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.session","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Session","text_hash":"6959b4159575d8dd76d9f3bbe2c6437904f861e7860c35abd18deffb1c3425a0","tgt_lang":"nl","translated":"Sessie","updated_at":"2026-04-29T17:41:49.561Z"}
|
||||
{"cache_key":"716df7abb0ecaa6bad16a610c06c0b613357bfef596aea8498f40224a0a40267","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"nl","translated":"gedeeltelijk","updated_at":"2026-05-03T18:29:04.543Z"}
|
||||
{"cache_key":"71e578eb4005105a52572e0737a5f729c2b974a9f8847dc1528114a58d4c0d20","model":"gpt-5.5","provider":"openai","segment_id":"execApproval.labels.resolved","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Resolved","text_hash":"5be3c2c8354e1eb924b03a3dcc7fa4172e9aa0f4917b46b44fcc7daf8835d7a7","tgt_lang":"nl","translated":"Opgelost","updated_at":"2026-04-29T19:28:57.024Z"}
|
||||
{"cache_key":"721bbc7a3332550ad2f33479f99e9ba68e594c77a7ebb218d22061c56859e2f1","model":"gpt-5.5","provider":"openai","segment_id":"usage.mosaic.wed","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Wed","text_hash":"58339f45df960408051cce029b5b76f049c70c0cb1059b97ff3d4d6ed7a68644","tgt_lang":"nl","translated":"Wo","updated_at":"2026-04-29T17:41:21.072Z"}
|
||||
{"cache_key":"72b4002f6a90d7b47cdf8f0023080bc1800074c63f6fdd6f62d4baedd1509fbd","model":"gpt-5.5","provider":"openai","segment_id":"cron.summary.refresh","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Refresh","text_hash":"0e91610117029a62a478b7fa7df0b8598bebe3ab1e192d4b1882e310719c9671","tgt_lang":"nl","translated":"Vernieuwen","updated_at":"2026-04-29T17:41:29.439Z"}
|
||||
@@ -591,6 +594,7 @@
|
||||
{"cache_key":"9a1af4589ff5ce370adc7d73adc323346703eec05001665173f0ab29319572cb","model":"gpt-5.5","provider":"openai","segment_id":"usage.sessions.noRecent","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"No recent sessions","text_hash":"100ac08064a6d5867a400a56b2949f9de3f6da4602a99461ee3a300c20273c1b","tgt_lang":"nl","translated":"Geen recente sessies","updated_at":"2026-04-29T17:41:11.913Z"}
|
||||
{"cache_key":"9aae730ad3df494dcc6b087874cbe397397bd687046778ee6f72e1a813b26389","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.sessionsHint","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Distinct sessions in the range.","text_hash":"03ac814eb939f3f67105d4862c3c3b47a36dc5906b2fa1fbf50c8e2ff2ec1255","tgt_lang":"nl","translated":"Unieke sessies binnen het bereik.","updated_at":"2026-04-29T17:41:05.885Z"}
|
||||
{"cache_key":"9b0a2bbbe7d0536f7b258529f12e03369d7a889f34a6a9595e1da7417de9f064","model":"gpt-5.5","provider":"openai","segment_id":"channels.nostr.editProfile","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Edit Profile","text_hash":"fec2ac0f4cf167e35facd4d2038d15e8d60cbd604d7769635012a48a87363f44","tgt_lang":"nl","translated":"Profiel bewerken","updated_at":"2026-04-29T17:39:57.520Z"}
|
||||
{"cache_key":"9b28c72326b15001334f457442292af5743f76780a9ecc7e62ac33f569198fb0","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"nl","translated":"verouderd","updated_at":"2026-05-03T18:29:04.543Z"}
|
||||
{"cache_key":"9b5253db6727eabfff8b40b8b73db0ef092e93afa63fbd3e03b28d70c94911d8","model":"gpt-5.5","provider":"openai","segment_id":"subtitles.nodes","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Paired devices and commands.","text_hash":"ba01dcb6cd16e3bde83b9bbeeda4a6bf8031dc599a60d41ee6c8cba63c847d17","tgt_lang":"nl","translated":"Gekoppelde apparaten en commando's.","updated_at":"2026-04-29T17:40:10.195Z"}
|
||||
{"cache_key":"9b5a3fae22e97098b37d9636adeb6b8b4f8eaad012e53d50dd0c9259ca9820b4","model":"gpt-5.5","provider":"openai","segment_id":"overview.palette.items.overview","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Overview","text_hash":"d4b1ea5708dd532930a85188b45aff6f0a3ed458500c7577e0127a538eb0d100","tgt_lang":"nl","translated":"Overzicht","updated_at":"2026-04-29T17:40:29.330Z"}
|
||||
{"cache_key":"9bba7f5e2105a8706b730d0590837a112ad981b22b6eb0c6b9a56c6fe1ab542e","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.stats.promoted","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Promoted","text_hash":"0cf04463c4276a6276986c22155bd4a32ce81e8dd162a657dedfa9afb97a7371","tgt_lang":"nl","translated":"Gepromoveerd","updated_at":"2026-04-29T17:40:44.097Z"}
|
||||
@@ -702,6 +706,7 @@
|
||||
{"cache_key":"b215146fe4971d698e5407fbbfe23331dda7120c77aeaa5f88d49454f01ea284","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.trace.promoted","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Promoted","text_hash":"0cf04463c4276a6276986c22155bd4a32ce81e8dd162a657dedfa9afb97a7371","tgt_lang":"nl","translated":"Gepromoveerd","updated_at":"2026-04-29T17:40:44.097Z"}
|
||||
{"cache_key":"b248c8fe88f63473d01abbb4e794e3b109737d8d23fa63ee1a30f066055f548c","model":"gpt-5.5","provider":"openai","segment_id":"execApproval.labels.security","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Security","text_hash":"8f6fb4eb7f42c0e245e29e63f5b82cc3ba19852681d1ed9aed291f59cf75ec0e","tgt_lang":"nl","translated":"Beveiliging","updated_at":"2026-04-29T19:28:57.024Z"}
|
||||
{"cache_key":"b2c658484ab5ff970733def80ae4e8f27de8432f0b4e5e8ee76b12702ec556d3","model":"gpt-5.5","provider":"openai","segment_id":"overview.connection.step1","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Start the gateway on your host machine:","text_hash":"b74384094713483b077df8caec91fcaf5726332a258a2853ed85750db16b43ad","tgt_lang":"nl","translated":"Start de Gateway op je hostmachine:","updated_at":"2026-04-29T17:40:22.936Z"}
|
||||
{"cache_key":"b31dc9b70b85151be0d348c67a62a5410efcf157df6e2b80eec39e0a6a3a7bb9","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"nl","translated":"{status}: {pending} in behandeling, {stale} verouderd, {cached} gecachet","updated_at":"2026-05-03T18:29:04.543Z"}
|
||||
{"cache_key":"b35248ec9933c871e5d69b30cbb6c2ff94efa61408895b98e0a272fd424be5c1","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.errors","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Errors","text_hash":"cb702378f31507efa79a2a2c6046050bc9f578f149c88e3c0a3d9532ab4b5300","tgt_lang":"nl","translated":"Fouten","updated_at":"2026-04-29T17:41:02.671Z"}
|
||||
{"cache_key":"b352babe02b715841d5f71cc23cd291851f97b7fa3012153895f0c42c7323b2d","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.bestEffortDelivery","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Best effort delivery","text_hash":"3bd441f6fbb7a403ddfbca4d72b456833615ff410acc7942651f571f79f80944","tgt_lang":"nl","translated":"Levering op best-effortbasis","updated_at":"2026-04-29T17:41:59.055Z"}
|
||||
{"cache_key":"b3a0532d4285bf5ff981205728c700279909a4e90bf23a975c1ad1bc8c2fed81","model":"gpt-5.5","provider":"openai","segment_id":"overview.cards.recentSessions","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Recent Sessions","text_hash":"f59b46c265d8d38fe5a10d81ea3b800931d2dc2c8a0ee180c5d8247ba7545cb7","tgt_lang":"nl","translated":"Recente sessies","updated_at":"2026-04-29T17:40:26.641Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:16:18.166Z",
|
||||
"generatedAt": "2026-05-03T18:28:54.082Z",
|
||||
"locale": "pl",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -326,6 +326,7 @@
|
||||
{"cache_key":"673b76cda73d49f4f982b6803e2c58d66be48479133e0112b908a0dd3c1e97c2","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.remove","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Remove filter","text_hash":"23c5cdc6269ef451d3b3aed87b2cf78c0153cc9097143b6140f23d2331f5947f","tgt_lang":"pl","translated":"Usuń filtr","updated_at":"2026-04-05T17:16:37.480Z"}
|
||||
{"cache_key":"6824f753bc7b0b230edf85cfbd3355b1273fb00b7f75357758568a1c3389b2b6","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.promotedDescription","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Items that already made it through promotion recently.","text_hash":"634f023132df2a70efefea851c0427d8827b34e7679253ab53700eb2cbb3058e","tgt_lang":"pl","translated":"Elementy, które niedawno przeszły już przez awans.","updated_at":"2026-04-10T07:53:13.891Z"}
|
||||
{"cache_key":"685da1f1d28ec389dce3c92b96aacf123452cce1aa236d04991d5fea466c64a5","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.calls","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"calls","text_hash":"f46f5990ebfadcab199107258b9dadd8711bd7946d8d00091a1073effcf2a843","tgt_lang":"pl","translated":"wywołania","updated_at":"2026-04-05T17:16:52.148Z"}
|
||||
{"cache_key":"689372851bd63dbd7cb12132ee4a21819223bf6613c9ea0aa37c34f94bd1cf6f","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"pl","translated":"odświeżanie","updated_at":"2026-05-03T18:28:53.931Z"}
|
||||
{"cache_key":"6935ab2e31dfe714427e5dca127c392421cbf5fa6baafaa1a83392e7f10b5d78","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.exactTimingHelp","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Run on exact cron boundaries with no spread.","text_hash":"9703f65e118e6804dabd58b8a31e34c994208f511a16eb699173991d6a041b57","tgt_lang":"pl","translated":"Uruchamiaj dokładnie na granicach cron bez rozłożenia w czasie.","updated_at":"2026-04-05T17:17:34.464Z"}
|
||||
{"cache_key":"69d9dd68cef767c84bbfa8bd621ab293f4c03fb8565da2d75d4cb23da833ae8f","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.advanced","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Advanced","text_hash":"9f088dbebd6c3c70a5ddbc2c943b11e4ca9acea5757b0b4f2b32479f0dbb747e","tgt_lang":"pl","translated":"Zaawansowane","updated_at":"2026-04-05T17:17:34.464Z"}
|
||||
{"cache_key":"69f1342749c69b52fcfca076cb7ffb695c5c99cbafefa656dbeeee4f93de40a5","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.shortTermDescription","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Current short-term candidates waiting to graduate into real memory.","text_hash":"0895c842efb140d4ebcd01bd1e976ecfa7e8d7318bd70d4ff1874976ba4729b8","tgt_lang":"pl","translated":"Bieżący kandydaci krótkoterminowi czekający na przejście do prawdziwej pamięci.","updated_at":"2026-04-10T07:59:52.747Z"}
|
||||
@@ -387,6 +388,7 @@
|
||||
{"cache_key":"7a3811e0e1a2d7daabd6cad1d47fcb66475a9d6ddf476672c5bb18f33a6fdf8e","model":"gpt-5.4","provider":"openai","segment_id":"cron.errors.systemTextRequired","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"System text is required.","text_hash":"7b13b35a0dabfa257fada59d07a81a0559c20e8a5049419e4969e2c538f110e5","tgt_lang":"pl","translated":"Tekst systemowy jest wymagany.","updated_at":"2026-04-05T17:17:43.807Z"}
|
||||
{"cache_key":"7ad60943f86908a44e9b67e2bf4a446090ae196b61204342da788d5bb865f3a2","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.insecureHttpDocsTitle","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Insecure HTTP docs (opens in new tab)","text_hash":"10642206faa50df2cdcf2852e455c9bf65abd99845a755e832ee5fd1394a2087","tgt_lang":"pl","translated":"Dokumentacja niezabezpieczonego HTTP (otwiera się w nowej karcie)","updated_at":"2026-04-20T06:27:03.164Z"}
|
||||
{"cache_key":"7b3f1fb49b0f6135702f63b723297870f1419398a079df4ba146b7886acedeec","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.phrases.forgettingNoise","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"forgetting what doesn't matter…","text_hash":"b1682b9653c2540fd575cc52cbf7c2e68d8fc54b3987c593f2b94fe4a6a8fc5a","tgt_lang":"pl","translated":"zapominanie o tym, co nieważne…","updated_at":"2026-04-06T02:51:30.967Z"}
|
||||
{"cache_key":"7b502be51f85411acc896653e6c76a90542ec788287e77ba795796b7ac703313","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"pl","translated":"{status}: oczekujące: {pending}, nieaktualne: {stale}, z pamięci podręcznej: {cached}","updated_at":"2026-05-03T18:28:53.931Z"}
|
||||
{"cache_key":"7b51af302dea7ec0315ea7175ed932cb935ffa3a49f054cfb523a17fade1cc2b","model":"gpt-5.4","provider":"openai","segment_id":"instances.lastInput","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Last input {time}","text_hash":"04c40c4d7fa4438b7d6afe2f3997bc427522d67e80f8adc42ee0269eed294760","tgt_lang":"pl","translated":"Ostatnie wejście {time}","updated_at":"2026-04-06T02:51:16.882Z"}
|
||||
{"cache_key":"7bc52d17fdccef14182429e12e52e3295ceb852a819e6691088114d837f4e895","model":"gpt-5.4","provider":"openai","segment_id":"languages.de","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Deutsch (German)","text_hash":"cd0a5a7df7be954cf9f626961358b88a33f88c6027a9e50e922673b5e9468cd6","tgt_lang":"pl","translated":"Deutsch (niemiecki)","updated_at":"2026-04-06T02:51:35.344Z"}
|
||||
{"cache_key":"7c19f471153c00dbedb9cbd857f81d60b8b129e9908c3864209ce6a7da97ad67","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.cancel","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Cancel","text_hash":"19766ed6ccb2f4a32778eed80d1928d2c87a18d7c275ccb163ec6709d3eb2e27","tgt_lang":"pl","translated":"Anuluj","updated_at":"2026-04-05T17:17:38.293Z"}
|
||||
@@ -469,6 +471,7 @@
|
||||
{"cache_key":"969fb9277e5142650574bc868d755ab53e9032f8356dadea745444cbbee5f5bd","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.phase.off","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"off","text_hash":"b4dc66dde806261bdda8607d8707aa727d308cd80272381a5583f63899918467","tgt_lang":"pl","translated":"wył.","updated_at":"2026-04-10T07:59:52.747Z"}
|
||||
{"cache_key":"96f6fefce73da12a45369f4c821ff666fed32b40a676c6d6f37619f19e401d74","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.messagesHint","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Total user and assistant messages in range.","text_hash":"fb47849222e3d9e020ec16c1a413c4a9d28d7028ba5496612a57ce0c597fc09a","tgt_lang":"pl","translated":"Łączna liczba wiadomości użytkownika i asystenta w wybranym zakresie.","updated_at":"2026-04-05T17:16:47.830Z"}
|
||||
{"cache_key":"97952cadbfb344dc00315567acd5217b647db8f431bfc76eaa151dfb22648981","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.trace.emptyShortTerm","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"No active short-term items.","text_hash":"e3a71c5ac02b76384ed603efc99062bf70b21092fd094fb3a7c0b3e2647ee757","tgt_lang":"pl","translated":"Brak aktywnych elementów krótkoterminowych.","updated_at":"2026-04-08T18:39:07.039Z"}
|
||||
{"cache_key":"9799e224f7eeab1da78d920ab0a32ce887a8cd5adac2479828cbd16e489f92ef","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"pl","translated":"Pamięć podręczna użycia jest odbudowywana w tle. Wyświetlane sumy mogą być nieaktualne.","updated_at":"2026-05-03T18:28:53.931Z"}
|
||||
{"cache_key":"97c3dfeae8397f0b05ebd508fca7f90b0d261553dc7a62bc54c939d033387c9b","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.timelineFiltered","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"timeline filtered","text_hash":"55a998947f847b55b7ed5d043bb86b0229c9bd2ae0a0f2ba61e74a2904f56100","tgt_lang":"pl","translated":"oś czasu przefiltrowana","updated_at":"2026-04-05T17:17:02.403Z"}
|
||||
{"cache_key":"97c959e1190909ad4e2773dae69f4c50f99ca77942ed2afb23d9c64ae3615584","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.overflowRetry","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"overflow retry","text_hash":"3584fcb50c1999ebb6da6e481789164e9b409fe3a9ecfc96d4f54e46fce130c9","tgt_lang":"pl","translated":"ponowna próba po przepełnieniu","updated_at":"2026-04-29T20:16:02.824Z"}
|
||||
{"cache_key":"982d09a5b2e28165d7885b6e871fe749784b900cb8af646387c5802491f3286d","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.scene.clearGrounded","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Clear Grounded","text_hash":"9d643608d2334885c6dfee865cacda8bc0d01f1a099b4ec8d710f3896f3e5091","tgt_lang":"pl","translated":"Wyczyść uziemione","updated_at":"2026-04-08T22:29:12.252Z"}
|
||||
@@ -533,6 +536,7 @@
|
||||
{"cache_key":"a6536bab1d749acd788a31bc086c705b455626e17ce30f330e748258a9bb8347","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.searchRuns","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Search runs","text_hash":"26d6d37f90dc1f5d611c3fa58c1a75a29384dd2e1ffb4b5a1b6f42331b0f1b6d","tgt_lang":"pl","translated":"Szukaj uruchomień","updated_at":"2026-04-05T17:17:14.777Z"}
|
||||
{"cache_key":"a66971896386d5225a712a2bc0bff85dcff6500e1e09c1bf59559892c3e6c528","model":"gpt-5.4","provider":"openai","segment_id":"overview.access.showToken","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Show token","text_hash":"2faef0ba40dc420f67de983b6c1be8f0f4b9b60f18409f2d2368b53b3c28a7bd","tgt_lang":"pl","translated":"Pokaż token","updated_at":"2026-04-20T06:27:03.164Z"}
|
||||
{"cache_key":"a69999af902695f52b0ab92d8dd5afadc269dcf79928efb346f43bef9677b2d2","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.trace.emptySignals","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"No active signals.","text_hash":"0d9d086593baedf3d8af5a8f30c9bdb495209fdb3413e02f1e74c6f8ce77e876","tgt_lang":"pl","translated":"Brak aktywnych sygnałów.","updated_at":"2026-04-08T18:39:07.039Z"}
|
||||
{"cache_key":"a6d9b6535fe311369d1e6a605e8c853468296376101922f43ddbe39a8f3d342d","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"pl","translated":"częściowe","updated_at":"2026-05-03T18:28:53.931Z"}
|
||||
{"cache_key":"a72b40771d7f0b7f9697cd86a6583ebd6fc1b33d7a79da036f5752f44e821714","model":"gpt-5.4","provider":"openai","segment_id":"usage.loading.title","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Usage Overview","text_hash":"4e59a10f60e0e162e55c1c8399a7bc68792b9120c5f57b11f522afd6d0f1971e","tgt_lang":"pl","translated":"Przegląd użycia","updated_at":"2026-04-05T17:16:34.931Z"}
|
||||
{"cache_key":"a789a3591b39e609d7131fb3889887175f8988262966424d5e2ec5645e326f92","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.bestEffortHelp","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Do not fail the job if delivery itself fails.","text_hash":"8918ef73561c96327b9a787e29004f468e5641b126fe2d28991df4020e5b7859","tgt_lang":"pl","translated":"Nie oznaczaj zadania jako nieudanego, jeśli samo dostarczenie się nie powiedzie.","updated_at":"2026-04-05T17:17:38.293Z"}
|
||||
{"cache_key":"a7c1b38b86ae6e2aedb12938b96b87db9a8eab34e218691cd7ed6cf619ade54e","model":"gpt-5.4","provider":"openai","segment_id":"overview.pairing.roleUpgradeSummary","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"This device is already paired, but the requested role change is waiting for approval.","text_hash":"6be065f7872c9da91207eaac047a8e9d1638e980449baa4746f51c69d1197695","tgt_lang":"pl","translated":"To urządzenie jest już sparowane, ale żądana zmiana roli oczekuje na zatwierdzenie.","updated_at":"2026-04-20T08:11:51.654Z"}
|
||||
@@ -552,6 +556,7 @@
|
||||
{"cache_key":"aa82e9344c2e67f5d7789670b3c5aec41f484a12a26f47e6a8b60deda924567b","model":"gpt-5.4","provider":"openai","segment_id":"usage.page.subtitle","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"See where tokens go, when sessions spike, and what drives cost.","text_hash":"fa0f98375312d0ca371ec9b5c020fd85699c07a6a827765d46275e8cb498e627","tgt_lang":"pl","translated":"Zobacz, gdzie trafiają tokeny, kiedy sesje osiągają szczyt i co generuje koszty.","updated_at":"2026-04-05T17:16:34.931Z"}
|
||||
{"cache_key":"aa97b9d8c8c8b7a495a37b5c26c0edc758cb804d394520c03969f9da13d91e7d","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.docsLink","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Read the docs →","text_hash":"412b59669150e05afaf4671cae2d9708750732c55d290efffeec7dcf7fef80e7","tgt_lang":"pl","translated":"Przeczytaj dokumentację →","updated_at":"2026-04-05T17:16:34.931Z"}
|
||||
{"cache_key":"aac37c326ec108b0c097cd1889319d6aaac7e86ac14427f22b65bf157809e971","model":"gpt-5.4","provider":"openai","segment_id":"subtitles.appearance","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Theme, UI, and setup wizard settings.","text_hash":"5b80d29d431c5b7aba941188ef192192dc8e59aa94a1fd0368c2372188ad72eb","tgt_lang":"pl","translated":"Motyw, UI i ustawienia kreatora konfiguracji.","updated_at":"2026-04-05T17:16:19.881Z"}
|
||||
{"cache_key":"aacdb99be6b2f67f3140f2e2e85b6f9e8019a9792a1b8b565b14a7336d6c4ba5","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"pl","translated":"nieaktualne","updated_at":"2026-05-03T18:28:53.931Z"}
|
||||
{"cache_key":"ab0978a79198c42beffcfaa099b9d519b4c4647764cbe816d9d455e66d4bb96c","model":"gpt-5.4","provider":"openai","segment_id":"subtitles.cron","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Wakeups and recurring runs.","text_hash":"6cc9803f98c63d9917c83a31deaf3c5afc3af9d5a00d6d2200756d884807ebf8","tgt_lang":"pl","translated":"Wybudzenia i cykliczne uruchomienia.","updated_at":"2026-04-05T17:16:19.881Z"}
|
||||
{"cache_key":"ab0c0409e6d0b69216883f15c172af6c008c8270abefba25035f77d446dd7764","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobList.disable","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Disable","text_hash":"b7e3e4aa4257b9a11a82f59faf34c8450ca10d4116885b0a29fedf60842d81d5","tgt_lang":"pl","translated":"Wyłącz","updated_at":"2026-04-05T17:17:38.293Z"}
|
||||
{"cache_key":"ab5719882ecde430a507d28b6ae515b9815cdbdf5284cd2b8a9cea0e40610106","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.avgCost","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Avg Cost / Msg","text_hash":"3f7ab301fda8d9c6379d4b8f9519c9037507dfd50e86c33c3af34526d5d3b436","tgt_lang":"pl","translated":"Śr. koszt / wiadomość","updated_at":"2026-04-05T17:16:47.830Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:12:27.198Z",
|
||||
"generatedAt": "2026-05-03T18:28:19.439Z",
|
||||
"locale": "pt-BR",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
{"cache_key":"012ff4fdb88ee271d6651a1eb060ff7f2a12540407dd4e41f6fe12b3a01fa794","model":"gpt-5.5","provider":"openai","segment_id":"chat.updating","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Updating…","text_hash":"dfe40efe921fe88e332575a3516f4e8cd6bbb71437cf260b2bb9b947c65d1484","tgt_lang":"pt-BR","translated":"Atualizando…","updated_at":"2026-04-29T20:12:23.444Z"}
|
||||
{"cache_key":"025392125a224c70d70b35d883c163756b383b32f03df3a13036cf5687dc569f","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.announceDefault","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Announce summary (default)","text_hash":"957972745edc1a6bff9600816b6c3e9599ca2b22f84e2aba567ced448b9f2589","tgt_lang":"pt-BR","translated":"Anunciar resumo (padrão)","updated_at":"2026-04-05T17:11:56.599Z"}
|
||||
{"cache_key":"02732de68ac131d30c1eb2e956deeafd506e993d3f1256d00c35185507f7b4f6","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.timezonePlaceholder","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"America/Los_Angeles","text_hash":"2d4bbedff807854084b7855fd6e0d49ab55b41e8c9395debd40d0e8e1d3390cf","tgt_lang":"pt-BR","translated":"America/Los_Angeles","updated_at":"2026-04-06T02:59:24.089Z"}
|
||||
{"cache_key":"0281dbb8cec471b8e314b73ba987b70d0c40d5c4fc945ff957572221875f77b6","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"pt-BR","translated":"{status}: {pending} pendentes, {stale} desatualizados, {cached} em cache","updated_at":"2026-05-03T18:28:19.287Z"}
|
||||
{"cache_key":"02ffddc62850fafb6d60b995c369b2dcb8436067c27ca712d336e2b748e60472","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.hoursCount","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"{count} hours","text_hash":"843c54a6f7f92aad4c40c81f0622b1c0aa129af9010ab5afc8cc639ff49b7c55","tgt_lang":"pt-BR","translated":"{count} horas","updated_at":"2026-04-05T17:10:44.725Z"}
|
||||
{"cache_key":"033461d1f6542fff7dda44717b191023ed1d9de2afeb2cff6b4035977c1f603c","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.subtitleEmpty","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Estimates require session timestamps.","text_hash":"242d30713d9b93113fb26af72f562aab6200824db8395f314351cfcbe0a164f0","tgt_lang":"pt-BR","translated":"As estimativas exigem carimbos de data e hora das sessões.","updated_at":"2026-04-05T17:11:24.071Z"}
|
||||
{"cache_key":"035cc327c8ff9032f4767c9c649e23fc138d51882e96c0df20bdb7b5028f4c37","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.tokensReadFromCache","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Tokens read from cache","text_hash":"dbfccd55c087362b7f98cea7a4b39eda9cf727df94f1cb4cd4fec24f6cc9251a","tgt_lang":"pt-BR","translated":"Tokens lidos do cache","updated_at":"2026-04-05T17:11:18.738Z"}
|
||||
@@ -35,6 +36,7 @@
|
||||
{"cache_key":"0bae8c9c3efd6c91b3a63a6c97d6cae9b6a3705634d3cc76efb11a7553d2158d","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.advanced","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Advanced","text_hash":"9f088dbebd6c3c70a5ddbc2c943b11e4ca9acea5757b0b4f2b32479f0dbb747e","tgt_lang":"pt-BR","translated":"Avançado","updated_at":"2026-04-06T02:47:44.853Z"}
|
||||
{"cache_key":"0c66ab03e2620ae02dfb154857d2d65198ca8ab033d0aa0bea00193974a01349","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.noMessagesMatch","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"No messages match the filters.","text_hash":"64a575d4d77472b6351168a4fadda155dd13148122fa7f9f3e69c721df41dde9","tgt_lang":"pt-BR","translated":"Nenhuma mensagem corresponde aos filtros.","updated_at":"2026-04-05T17:11:24.071Z"}
|
||||
{"cache_key":"0c71ed1ca7d5b5b0f9a0768b7bea864ba5a4d0a01c8e927a6133993a6165d117","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.subtitleAll","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Latest runs across all jobs.","text_hash":"518357fee0ecb18cbbd2f1d29ea0fdda418f839ce47a3a0c0613aa9f92eedd89","tgt_lang":"pt-BR","translated":"Execuções mais recentes de todas as tarefas.","updated_at":"2026-04-05T17:11:37.991Z"}
|
||||
{"cache_key":"0c7508b697c256e60a51885050d199c3e276fa9753a01ed309c22a104f8c0298","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"pt-BR","translated":"parcial","updated_at":"2026-05-03T18:28:19.287Z"}
|
||||
{"cache_key":"0ce330ec39d454a040106acf4714b79fa4d5830800854785d61482800e206825","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.modelPlaceholder","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"openai/gpt-5.2","text_hash":"6132e68d7f0a0599f9968517c48ad233160cb117b47061c666343a680e0f969d","tgt_lang":"pt-BR","translated":"openai/gpt-5.2","updated_at":"2026-04-06T02:59:24.089Z"}
|
||||
{"cache_key":"0d8edb2ba42905c7adc22f084c27925e02d8f6d09bfeec3a1f1063dbccb84d67","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.steps.when","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"When","text_hash":"cf9c7aa24a26aac4f0ec4b6395cbfdcc055677c3dac87bd6af898bccd66d4e17","tgt_lang":"pt-BR","translated":"Quando","updated_at":"2026-04-29T20:12:27.045Z"}
|
||||
{"cache_key":"0daf4acac1f3b2d4c446a2121159b00895a65aba07f3eedb806402c7df76a156","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.delivery.silent.description","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Run without notification","text_hash":"4ec9ec8312db9f6fe8f47f01f859e1872642f3590d379821cb517b028f808083","tgt_lang":"pt-BR","translated":"Executar sem notificação","updated_at":"2026-04-29T20:12:23.445Z"}
|
||||
@@ -102,6 +104,7 @@
|
||||
{"cache_key":"265ecb3e4c75ebdb695228cf3ed090497fbe1a5039e8c033b5bb560fb52161b9","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.wakeMode","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Wake mode","text_hash":"0cdf77cce3335e6f2107f1f1fee1e34d7b105fd90a5b78e15f1a297dd4f89256","tgt_lang":"pt-BR","translated":"Modo de ativação","updated_at":"2026-04-05T17:11:52.042Z"}
|
||||
{"cache_key":"267d3fddf5f9da781518c1c1debff188a39349cf58c89b05bbfa6e894181392f","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.sessionsHint","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Distinct sessions in the range.","text_hash":"03ac814eb939f3f67105d4862c3c3b47a36dc5906b2fa1fbf50c8e2ff2ec1255","tgt_lang":"pt-BR","translated":"Sessões distintas no intervalo.","updated_at":"2026-04-05T17:11:04.688Z"}
|
||||
{"cache_key":"26897ec52fd7f40c50d4e2a28085ed2d35d7e68a1f11e1ba854eb6d4fffb4d08","model":"gpt-5.4","provider":"openai","segment_id":"cron.errors.scheduleAtInvalid","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Enter a valid date/time.","text_hash":"4878bf3e9a06845a2ac4fee29c4518ac244808363fc4fa23e04e929c6e4a0554","tgt_lang":"pt-BR","translated":"Insira uma data/hora válida.","updated_at":"2026-04-05T17:12:09.949Z"}
|
||||
{"cache_key":"2694f2515f79614116a799dff7d5d58c254b96897b4623a6fd85ad23128795ad","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"pt-BR","translated":"atualizando","updated_at":"2026-05-03T18:28:19.287Z"}
|
||||
{"cache_key":"26d5292191455343cea78202f623e2c8b1c58d4b67281e15378015cc28f4a4bd","model":"gpt-5.4","provider":"openai","segment_id":"channels.gatewayUrlConfirmation.warning","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Only confirm if you trust this URL. Malicious URLs can compromise your system.","text_hash":"c67ff862ac6adf5342af661a4383b9f75fd21ef37baaf80bcb6c799982a1a7e2","tgt_lang":"pt-BR","translated":"Confirme apenas se você confiar nesta URL. URLs maliciosas podem comprometer seu sistema.","updated_at":"2026-04-06T02:47:40.937Z"}
|
||||
{"cache_key":"26eeb628e38d3e3bd7036e15fdd712a0b0391337c474621b4d5df6de7103b8f3","model":"gpt-5.4","provider":"openai","segment_id":"instances.toggleHostVisibility","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Toggle host visibility","text_hash":"dd0188424f6a0434d4af848b7462f4d12da05800bfc24d82cb2c0d7e443b657b","tgt_lang":"pt-BR","translated":"Alternar visibilidade do host","updated_at":"2026-04-06T02:47:48.413Z"}
|
||||
{"cache_key":"272ced230bedda55ecfa7fbb02afe15a2bbdd8cf93ec73904d4fecff2027ed1e","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.collapseAll","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Collapse All","text_hash":"55988e28a4e8720a588c5c53fd47616d929a404d3d2af7e6f8ba313dce6dc3e4","tgt_lang":"pt-BR","translated":"Recolher tudo","updated_at":"2026-04-05T17:11:18.738Z"}
|
||||
@@ -481,6 +484,7 @@
|
||||
{"cache_key":"ae26eeac5a442c17411b1e7e01ae6acf421c7134d26d8f1be1e80eb6a3445022","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.updateSubtitle","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Update the selected scheduled job.","text_hash":"ed99ca1a9cd6abc6cef3c8ab9022ec162d7b7080c2fb4c5c9d3b58be2229c803","tgt_lang":"pt-BR","translated":"Atualize a tarefa agendada selecionada.","updated_at":"2026-04-05T17:11:43.511Z"}
|
||||
{"cache_key":"ae6132eb2985d196a2e45380f8e7d6537c4a5f81429cf992f2f2e8255e28c8d8","model":"gpt-5.4","provider":"openai","segment_id":"common.lastStart","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Last start","text_hash":"37a1eec0a7895251539d960c0ee5951c83da27223bdf5223c8440a4a48e061ef","tgt_lang":"pt-BR","translated":"Última inicialização","updated_at":"2026-04-06T02:47:36.962Z"}
|
||||
{"cache_key":"ae6fcc1e89db03845bc54976fa972f7c1e5374ee958a60d596a3f57c2e12eaf9","model":"gpt-5.4","provider":"openai","segment_id":"instances.subtitle","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Presence beacons from the gateway and clients.","text_hash":"5349f6c160fabe02b9b0d3065e8cd995704de9fcb2894945af4660d9cb35f666","tgt_lang":"pt-BR","translated":"Sinalizadores de presença do gateway e dos clientes.","updated_at":"2026-04-06T02:47:48.413Z"}
|
||||
{"cache_key":"af1f682b1c3fd31a1b9218d7d940a1b69a90536473a88823cc2e6c98ac9d03b6","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"pt-BR","translated":"desatualizado","updated_at":"2026-05-03T18:28:19.287Z"}
|
||||
{"cache_key":"b000f066a66bb46496bb8dbbe1c30715990caeeee42e2d7eee301b3c373749a1","model":"gpt-5.4","provider":"openai","segment_id":"common.lastConnect","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Last connect","text_hash":"c22a3373165f8fa5e8c4e172e3a4430b8084a96a8a3b32b7f6f66d48dd028811","tgt_lang":"pt-BR","translated":"Última conexão","updated_at":"2026-04-06T02:47:36.962Z"}
|
||||
{"cache_key":"b03678c2061e746a7764a729e43b6594b7ccf9bb9c1c8b2a1cbcbd6c84e9e58e","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.conversation","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Conversation","text_hash":"ccca1817575365871461752f3229dd59ede742ae69e350e20fd00a6ce3d149e3","tgt_lang":"pt-BR","translated":"Conversa","updated_at":"2026-04-05T17:11:18.738Z"}
|
||||
{"cache_key":"b03e4c46f486f32397c776603b5d6175524a63ca070ce8fe84842d43d342c7dd","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.agentId","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Agent ID","text_hash":"510bce732db77286d6622dfb5f99f59f346efd77c3746ab3474d6be2ab684c32","tgt_lang":"pt-BR","translated":"ID do agente","updated_at":"2026-04-05T17:11:43.511Z"}
|
||||
@@ -683,6 +687,7 @@
|
||||
{"cache_key":"f52c31eef0c05e596c8d13e20ff4ae9a6b0a762e3dee707159ce4f3c7fdac1ae","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.toolResults","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"tool results","text_hash":"a5594e12dfffd8e54c36d9b99bc31c7d41f0389d2251790338f34e836a3211fe","tgt_lang":"pt-BR","translated":"resultados de ferramenta","updated_at":"2026-04-05T17:10:58.366Z"}
|
||||
{"cache_key":"f5bd91fa388bac9ea06734e2cad0b8cfb59b6a0d3d29eb712dc3a6fe2f95c94f","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.bestEffortHelp","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Do not fail the job if delivery itself fails.","text_hash":"8918ef73561c96327b9a787e29004f468e5641b126fe2d28991df4020e5b7859","tgt_lang":"pt-BR","translated":"Não falhe a tarefa se a própria entrega falhar.","updated_at":"2026-04-05T17:12:00.745Z"}
|
||||
{"cache_key":"f62bf060c0102293c1bfb81709138ff01bffc01fba6058fc2e509d5559a16b99","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.status.nextSweepPrefix","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"next sweep","text_hash":"836b65b782a40d015ac29fa976e399ea979cc1c659c551f5de304c4004ed8dd4","tgt_lang":"pt-BR","translated":"próxima varredura","updated_at":"2026-04-06T02:47:55.735Z"}
|
||||
{"cache_key":"f6ef2664782b68d096a9790206ffcae9eb464a29d04d2b1002ae2738ee88a8a4","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"pt-BR","translated":"O cache de uso está sendo reconstruído em segundo plano. Os totais exibidos podem estar desatualizados.","updated_at":"2026-05-03T18:28:19.287Z"}
|
||||
{"cache_key":"f778a4439865870f0a152d76f3d986f4762fac3fc3562981907d9ef89f6f7d15","model":"gpt-5.4","provider":"openai","segment_id":"usage.empty.subtitle","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.","text_hash":"ca71e79b3867fcfedecce345bf3266c962cb627906ba83e102a44ddab8fa97dc","tgt_lang":"pt-BR","translated":"Carregue os dados de uso para comparar custos, inspecionar sessões e explorar cronogramas sem sair do painel.","updated_at":"2026-04-05T17:10:49.727Z"}
|
||||
{"cache_key":"f79562e6b32c05a70fd8303d8ef937260d8e1943dd3efdd19b69876c3fde4e66","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.title","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Daily Log Review","text_hash":"44fc6083dd2c1241ce8e230650168a41c72505aed45de4f86b0c203ad4d12fda","tgt_lang":"pt-BR","translated":"Revisão do Log Diário","updated_at":"2026-04-10T07:58:35.935Z"}
|
||||
{"cache_key":"f8095136b572c90fe5f02b0e3d98b0f112b1a416e84ab6ae7fe4a06a76335d4f","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.agentTurn","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Run assistant task (isolated)","text_hash":"85e3b61f266e08272951dc2b297e3b9be91b1550d1e567f45fa903078386f8f5","tgt_lang":"pt-BR","translated":"Executar tarefa do assistente (isolada)","updated_at":"2026-04-05T17:11:52.042Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:16:27.136Z",
|
||||
"generatedAt": "2026-05-03T18:28:57.460Z",
|
||||
"locale": "th",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
{"cache_key":"037ccbc942f6fed9d8283b4e9554af4dca61038057dafea6e3fc73ca8d1c76a8","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.selected","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"{count} selected","text_hash":"529aacfdfd2b17bf9fe56ebad9a24339a2d1151327dd420c52c5f163aeb9acc6","tgt_lang":"th","translated":"เลือกแล้ว {count} รายการ","updated_at":"2026-04-29T20:16:08.353Z"}
|
||||
{"cache_key":"03843727d727ff5e721adc2e0949303bf0ed49a35c5047ca7cfd02e805638f76","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.newJob","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"New Job","text_hash":"ddacafb76972da324383c04b284cdb4ab1f50620959a20f4682fafb325ee12df","tgt_lang":"th","translated":"งานใหม่","updated_at":"2026-04-23T06:28:30.392Z"}
|
||||
{"cache_key":"03d44bb5e8082caf79beb28eb409ff1bd9ac8dfc8d9c5619c06883a525060e1e","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.tabs.scene","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Scene","text_hash":"477e5af2fd7e4472aad3064654e4aa8bdd8653d826e8a6bfbd14f3537b072df8","tgt_lang":"th","translated":"ฉาก","updated_at":"2026-04-23T06:26:47.687Z"}
|
||||
{"cache_key":"03f24759a358aaefd039ce0573d5d4fbfdd39977d67de150c9a6efc4b0b5acbc","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"th","translated":"กำลังรีเฟรช","updated_at":"2026-05-03T18:28:57.309Z"}
|
||||
{"cache_key":"04143f862b22e2c852a5f2841778b04a8beb2dcf61b095d0e395d555421293cf","model":"gpt-5.4","provider":"openai","segment_id":"chat.hideCronSessions","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Hide cron sessions","text_hash":"32ac86b13fa25acc4626f518ba49fe9c6307d7bb1b518e05c7eaf4b327a85840","tgt_lang":"th","translated":"ซ่อนเซสชัน cron","updated_at":"2026-04-23T06:28:14.367Z"}
|
||||
{"cache_key":"042ef3a11226ca59d95a35c8feaac3e7932284b907fc591fe8349ea00d4eafdb","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.filtered","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"(filtered)","text_hash":"ff5bcbf42db8f900aa7678f0c3859d3f48f33f9279f6582e19952c885cea371b","tgt_lang":"th","translated":"(กรองแล้ว)","updated_at":"2026-04-23T06:27:59.553Z"}
|
||||
{"cache_key":"0475820633b4c56c87c4602ce569f55d697de9c4ad211af020f0af8aa5938c22","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.noMessagesMatch","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"No messages match the filters.","text_hash":"64a575d4d77472b6351168a4fadda155dd13148122fa7f9f3e69c721df41dde9","tgt_lang":"th","translated":"ไม่มีข้อความที่ตรงกับตัวกรอง","updated_at":"2026-04-23T06:28:03.182Z"}
|
||||
@@ -124,6 +125,7 @@
|
||||
{"cache_key":"2989be63bd00fd62cbee1ae185da9cded6415d6a22c1bf19882876b2a135b60e","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.emptyGrounded","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"No staged grounded replay entries right now.","text_hash":"3c85fa80872b7e5f27da121c22707aecb7dc74f627b2bcecff0373916fbf7270","tgt_lang":"th","translated":"ขณะนี้ยังไม่มีรายการเล่นซ้ำแบบ grounded ที่จัดเตรียมไว้","updated_at":"2026-04-23T06:26:57.447Z"}
|
||||
{"cache_key":"299448dfb1bd0dc2a545a8f0fdbc0145f1da1d660924eea8323e1adee74a233e","model":"gpt-5.4","provider":"openai","segment_id":"cron.summary.refresh","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Refresh","text_hash":"0e91610117029a62a478b7fa7df0b8598bebe3ab1e192d4b1882e310719c9671","tgt_lang":"th","translated":"รีเฟรช","updated_at":"2026-04-23T06:28:18.164Z"}
|
||||
{"cache_key":"29da64cbdb083a904006e18de7ecab57ee68e2fb3029bbb7698f2cfb2990c645","model":"gpt-5.5","provider":"openai","segment_id":"languages.it","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Italiano (Italian)","text_hash":"0090dc269d25b87e5739c688fed25a00a04b01d196c0c54fafeabf22351e6864","tgt_lang":"th","translated":"Italiano (อิตาลี)","updated_at":"2026-04-29T17:38:48.351Z"}
|
||||
{"cache_key":"2a2abad3a6cccc5614eb61e613369c83500c4cc481137212d0b8c785a27b6840","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"th","translated":"{status}: ค้างอยู่ {pending}, ล้าสมัย {stale}, แคชแล้ว {cached}","updated_at":"2026-05-03T18:28:57.309Z"}
|
||||
{"cache_key":"2a3fa3edc2e61106a6dc22c131096b406affcfd07254803fea58db414ff7ee45","model":"gpt-5.4","provider":"openai","segment_id":"nodes.binding.loadConfigHint","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Load config to edit bindings.","text_hash":"075f4d7948e28bf0f85baefbdfe31e6a11a86d94ac38cbc3c100fdf8981c8839","tgt_lang":"th","translated":"โหลด config เพื่อแก้ไขการผูก","updated_at":"2026-04-23T06:25:58.698Z"}
|
||||
{"cache_key":"2a4617b368aa16360480571a6318b18d2060a860a9d8e43c312c975d41fe2209","model":"gpt-5.4","provider":"openai","segment_id":"common.working","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Working…","text_hash":"5474eef8d0f179c707cf418e2bbb468c77cc24edc5e9f5f4e137e85e06a8eea0","tgt_lang":"th","translated":"กำลังดำเนินการ…","updated_at":"2026-04-23T06:25:43.283Z"}
|
||||
{"cache_key":"2a53dea519d17bcd613678242f012a23212461dd48e06e5e101c167b36ecdd9e","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.restartConfirmation.title","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Restart Gateway to Apply Change","text_hash":"03bab7944e05cd7f3453161737377ac6aab8c0063452f30f89b1cf096cd2f82b","tgt_lang":"th","translated":"รีสตาร์ท Gateway เพื่อใช้การเปลี่ยนแปลง","updated_at":"2026-04-27T08:12:09.399Z"}
|
||||
@@ -236,6 +238,7 @@
|
||||
{"cache_key":"4a4ca1defe668ec7121058e978bc20a8c826a64ed1e62adfc930902fe57fafa8","model":"gpt-5.4","provider":"openai","segment_id":"cron.errors.invalidRunTime","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Invalid run time.","text_hash":"51465fa3cb94966411a49d8d1972fe997ac028fd249e05df55db8a2179975b48","tgt_lang":"th","translated":"เวลารันไม่ถูกต้อง","updated_at":"2026-04-23T06:28:58.578Z"}
|
||||
{"cache_key":"4abdf49e1cac49ab649d5cc1c14a729948d2c1d3a05db415b97364e7e1261391","model":"gpt-5.4","provider":"openai","segment_id":"cron.summary.yes","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Yes","text_hash":"85a39ab345d672ff8ca9b9c6876f3adcacf45ee7c1e2dbd2408fd338bd55e07e","tgt_lang":"th","translated":"ใช่","updated_at":"2026-04-23T06:28:18.164Z"}
|
||||
{"cache_key":"4b2172731044ca5a442084c79cdd8f69e651dda7379a9eaac615a515d60e7fa5","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.staggerWindow","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Stagger window","text_hash":"4590b8c872baf94543c2b50f3be2c8b4b0350919c944fc98e73d6f4a22f6bc18","tgt_lang":"th","translated":"หน้าต่าง stagger","updated_at":"2026-04-23T06:28:46.608Z"}
|
||||
{"cache_key":"4b55a6a8fa364bfce582fe630e553335324de1f144902aea2eaf3df24bd0ac25","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"th","translated":"แคชการใช้งานกำลังสร้างใหม่ในเบื้องหลัง ยอดรวมที่แสดงอาจไม่เป็นปัจจุบัน","updated_at":"2026-05-03T18:28:57.308Z"}
|
||||
{"cache_key":"4b87f74f9333c5cef02972781d8d3420e85304902ed17791b04c87b21b401f57","model":"gpt-5.4","provider":"openai","segment_id":"nodes.binding.formModeHint","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Switch the Config tab to Form mode to edit bindings here.","text_hash":"af8526a5a7a925ecaa127907fc4e377373054036b27f99251767b5e4a2a135f8","tgt_lang":"th","translated":"สลับแท็บ Config เป็นโหมด Form เพื่อแก้ไขการผูกที่นี่","updated_at":"2026-04-23T06:25:58.698Z"}
|
||||
{"cache_key":"4bc90bfde7b8e992904669f50c9622bc1b042efa64e399f0f44a94be0d5ef22f","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.searchPlaceholder","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Summary, error, or job","text_hash":"ef9c8b23d8cb48be34ce590dd08a750fdf316b9060b4cbeb0cacb35ca39d51c7","tgt_lang":"th","translated":"สรุป ข้อผิดพลาด หรืองาน","updated_at":"2026-04-23T06:28:26.350Z"}
|
||||
{"cache_key":"4c607f15a6ec04e0ab8a7194b67070fb252ad1f6586c9e15a34aaf178ca111bc","model":"gpt-5.4","provider":"openai","segment_id":"usage.presets.today","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Today","text_hash":"2b065c7c9ce466e5ebcad757987d5d660ee4c9ea708bc62c43444b53334738ba","tgt_lang":"th","translated":"วันนี้","updated_at":"2026-04-23T06:27:22.345Z"}
|
||||
@@ -384,6 +387,7 @@
|
||||
{"cache_key":"76a6850569baa93d30cb1570ba68294fd762a4a511549615f46af5edc97effb7","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.deliveryHelp","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Announce posts a summary to chat. None keeps execution internal.","text_hash":"498c5ec5bb9d978555cd7f5d47729adb9fb18f11c18ba02d7294e3d964bf3155","tgt_lang":"th","translated":"Announce จะโพสต์สรุปไปยังแชต ส่วน None จะเก็บการทำงานไว้ภายใน","updated_at":"2026-04-23T06:28:41.624Z"}
|
||||
{"cache_key":"76e9fae872f93b3cd6f6704197d1dd4385cb326d0ddf1a64befde195ced40436","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.mon","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Mon","text_hash":"f40d7f51f69edfaffa29c42910fbc6af6a822f1279162d486b4a7e11c3e0ae9b","tgt_lang":"th","translated":"จ.","updated_at":"2026-04-23T06:28:07.264Z"}
|
||||
{"cache_key":"7755da1438ec1ebe75eb3bcaaf6f1627be2d55c75e44502ac568a9900af67cdc","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.deleteSelected","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Delete","text_hash":"e2d0a54968ead24efc0dffa6ac78fc606dceec34a0f586177a74a54cc2272cf8","tgt_lang":"th","translated":"ลบ","updated_at":"2026-04-29T20:16:08.353Z"}
|
||||
{"cache_key":"7760483073fc5df62e1c922dc46191ba879bcfec5b6f9093ab1e298e6d43666e","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"th","translated":"ล้าสมัย","updated_at":"2026-05-03T18:28:57.309Z"}
|
||||
{"cache_key":"778261981e28fcbee7f6650e0d34e77e771681185d42d4bd9ce650ddf5eb1366","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.assistantTaskPrompt","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Assistant task prompt","text_hash":"eae69a35d4c19250d0b7b64f79fc60a3e461cd02d085df3bf8079852fe42df91","tgt_lang":"th","translated":"พรอมป์ต์งานของผู้ช่วย","updated_at":"2026-04-23T06:28:41.624Z"}
|
||||
{"cache_key":"77bce184e48056674184359ee762c9a9c812e12b3fcffb12cb17cd837bdfff5d","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobs.schedule","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Schedule","text_hash":"f4830a1dae2980447c716bd4b5779b7013575ef09f70ef4731457218792487b3","tgt_lang":"th","translated":"กำหนดเวลา","updated_at":"2026-04-23T06:28:18.164Z"}
|
||||
{"cache_key":"77de17286b7a44e32da809a37f35c26a34c04009d438134b0e7cc2be41025b64","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.key","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Key","text_hash":"99a52df3ff3d499488e2fa28150c4106a2cb5e928891a830a9aa3922b2d32160","tgt_lang":"th","translated":"คีย์","updated_at":"2026-04-29T20:16:12.038Z"}
|
||||
@@ -571,6 +575,7 @@
|
||||
{"cache_key":"ac2b342a58bfa9a3b695fd842eb19d67af09f771f92759a5f867a82093e5accb","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.title","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Activity by Time","text_hash":"d4f5e691d1d415aabf25860ac10b620e6f798075db0ef42c7a59a41f340c80e6","tgt_lang":"th","translated":"กิจกรรมตามเวลา","updated_at":"2026-04-23T06:28:03.182Z"}
|
||||
{"cache_key":"ac3e3e23b711987eb6dc2064912c926b964898233724bd798d14bffa11f94096","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.peakErrorHours","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Peak Error Hours","text_hash":"d549fec62ae3b5a839e25b808949b2cae7c3c55b558db510872616464028d103","tgt_lang":"th","translated":"ชั่วโมงที่เกิดข้อผิดพลาดสูงสุด","updated_at":"2026-04-23T06:27:48.593Z"}
|
||||
{"cache_key":"ac70abae69d309f280ea011c6ae53b1233744956ab21e354da1ddd8ac6fb985c","model":"gpt-5.4","provider":"openai","segment_id":"overview.access.togglePasswordVisibility","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Toggle password visibility","text_hash":"1016c07b0f58d365790cc799fb215afd92fde1aeb5ac47cd17260e327465b2d6","tgt_lang":"th","translated":"สลับการแสดงรหัสผ่าน","updated_at":"2026-04-23T06:26:22.933Z"}
|
||||
{"cache_key":"ac73933e2c022bdace007e6226f897e0c7c686c64bc05d750ea95732e34fe657","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"th","translated":"บางส่วน","updated_at":"2026-05-03T18:28:57.309Z"}
|
||||
{"cache_key":"aca0e8719a0a9e7d55294e94d479b91c84835b7c1701595721835ee403f16d25","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.assistantOutputTokens","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Assistant output tokens","text_hash":"a4f9a27f36f8e36fef71d7b22a318cc12ecf384c472e3ebddd39767741057d59","tgt_lang":"th","translated":"โทเค็นเอาต์พุตของผู้ช่วย","updated_at":"2026-04-23T06:27:59.553Z"}
|
||||
{"cache_key":"aca49abaf13652a4c409ff06eb2d17886ec018ba32930bd05efcff7b88429b1b","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.subtitleEmpty","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Estimates require session timestamps.","text_hash":"242d30713d9b93113fb26af72f562aab6200824db8395f314351cfcbe0a164f0","tgt_lang":"th","translated":"การประมาณค่าต้องใช้เวลาประทับของเซสชัน","updated_at":"2026-04-23T06:28:03.182Z"}
|
||||
{"cache_key":"ad035e7be9c073970e2341f1dcb367b0434dda7d86e3c005f13872f01e11c860","model":"gpt-5.4","provider":"openai","segment_id":"tabs.usage","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Usage","text_hash":"8d59829c1e15afe1a7fae93e8e5e32d8511bec5fd598a09f4fea6033b31e8a66","tgt_lang":"th","translated":"การใช้งาน","updated_at":"2026-04-23T06:26:07.885Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:15:15.000Z",
|
||||
"generatedAt": "2026-05-03T18:28:44.586Z",
|
||||
"locale": "tr",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -259,7 +259,9 @@
|
||||
{"cache_key":"4fc4aece70d483c91be8b1a92aedd3b7657787a07ae3f17cd2ad002ac39b9500","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.announceDefault","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Announce summary (default)","text_hash":"957972745edc1a6bff9600816b6c3e9599ca2b22f84e2aba567ced448b9f2589","tgt_lang":"tr","translated":"Özeti duyur (varsayılan)","updated_at":"2026-04-05T17:16:19.703Z"}
|
||||
{"cache_key":"5065ab6ad3cd010ac206b2e3c1cc4298a7297ef87637dc684234b0fd934c26c7","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobs.searchJobs","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Search jobs","text_hash":"989ecb5d07fd4c769ec4212085c63eab4b2bbede961979f8903fd98ed5c874d9","tgt_lang":"tr","translated":"İşlerde ara","updated_at":"2026-04-05T17:15:57.661Z"}
|
||||
{"cache_key":"50de0fa7ed4fe7b457acf4c93c301ec92311b1416aab1a25a9e3f041485ff7c1","model":"gpt-5.4","provider":"openai","segment_id":"languages.es","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Español (Spanish)","text_hash":"b785e11e822c061a3a5368c55fbeb3f436766ef1e9b3448a605083d0b06ecddb","tgt_lang":"tr","translated":"Español (İspanyolca)","updated_at":"2026-04-05T17:15:52.927Z"}
|
||||
{"cache_key":"50e42579a49e0edd378bec93f3b5e5dc1f8d23a2feec99563225d74227b1b3a5","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"tr","translated":"Kullanım önbelleği arka planda yeniden oluşturuluyor. Görüntülenen toplamlar güncel olmayabilir.","updated_at":"2026-05-03T18:28:44.435Z"}
|
||||
{"cache_key":"5148f516aae860f9a4f59b4f266735a9394af2cddca465df45dcc0a8ba2abadf","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.recentShort","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Recent","text_hash":"690dbe9dc0993c4256683738fc3fd541cfa96f60d299be33343615dd58179d93","tgt_lang":"tr","translated":"Son","updated_at":"2026-04-05T17:15:36.684Z"}
|
||||
{"cache_key":"5152b005c0df3c4127eb13e1a8cc6bfb57020c8bcef2db287c6372d0e4693bd3","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"tr","translated":"yenileniyor","updated_at":"2026-05-03T18:28:44.435Z"}
|
||||
{"cache_key":"51809c66606b5555b852572e04ce933e1c4333fc3a3f4fa5dc91d927d6b7a3f1","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.promptPlaceholder","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"e.g., Check my inbox for urgent emails and summarize them...","text_hash":"f4675787351dcf3b421c7f187fc9e501f37cb0a5ca79ddcde938cf99efe2dac1","tgt_lang":"tr","translated":"örn., Gelen kutumu acil e-postalar için kontrol et ve özetle...","updated_at":"2026-04-29T20:15:14.846Z"}
|
||||
{"cache_key":"51d06f242cf79ef979ba328ce48ed9928044aee01e11083dab582a986bc9bf73","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.checkpoint","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"{count} checkpoint","text_hash":"a3464267384f9c0267ca207515e3c578f8677f0ba6a365359fec630ef3d66e57","tgt_lang":"tr","translated":"{count} kontrol noktası","updated_at":"2026-04-29T20:15:07.759Z"}
|
||||
{"cache_key":"524403c5670d0620c8f0235e8065978de05bbf516eb6129c9fbbea6c5e7672f7","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.hours","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Hours","text_hash":"21e8492938abc179410c21f3598f141c4c59a8bf2d3b4e475b7d83e10adfc00f","tgt_lang":"tr","translated":"Saatler","updated_at":"2026-04-05T17:15:18.153Z"}
|
||||
@@ -427,6 +429,7 @@
|
||||
{"cache_key":"83202d108106c8346fbec899a92e09e6c0363fa40d43b70fc4586be36504b44f","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.isolated","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Isolated","text_hash":"1d183f3f10e963cae3a2e0a10a693f7895b03602715a121d984f3406e37ba2e2","tgt_lang":"tr","translated":"Yalıtılmış","updated_at":"2026-04-05T17:16:13.762Z"}
|
||||
{"cache_key":"83db61fcf9de8c2a6838cbf9c0ed392d95daf40c26f8717978fa797abc7c171e","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.key","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Key","text_hash":"99a52df3ff3d499488e2fa28150c4106a2cb5e928891a830a9aa3922b2d32160","tgt_lang":"tr","translated":"Anahtar","updated_at":"2026-04-29T20:15:03.630Z"}
|
||||
{"cache_key":"83f40ce9f8379ceee252de9d97955462e1be7d5dd20a19698f93ffe2ffd57240","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.eightAm","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"8am","text_hash":"e30c8b1920cbd73bb28b87bc0292e424df7a26513eb87b2ca9a8bca7f9a6b2ee","tgt_lang":"tr","translated":"08:00","updated_at":"2026-04-05T17:15:48.675Z"}
|
||||
{"cache_key":"83f55aff44f0f67408c3daa7683f3f21e55f57ee66b31913ceb5a7859c161f70","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"tr","translated":"güncel değil","updated_at":"2026-05-03T18:28:44.435Z"}
|
||||
{"cache_key":"840f733af254070cd8b5fcd10067dc1a96e1188c9d1c06831fd501361989bc0e","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobList.edit","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Edit","text_hash":"464c4ffd019e1e9691dcf0537c797353ef2b1c1d4833d3d463e5b74ae4547344","tgt_lang":"tr","translated":"Düzenle","updated_at":"2026-04-05T17:16:30.018Z"}
|
||||
{"cache_key":"847fa581a2d7b04371ceca8bb39173bf3231114172ef608bba6c5f61c7290559","model":"gpt-5.4","provider":"openai","segment_id":"common.reloadConfig","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Reload Config","text_hash":"48e6315352561c36be84097326fbb3558b4c2fa3fc4f833402d32040ccb640f7","tgt_lang":"tr","translated":"Yapılandırmayı Yeniden Yükle","updated_at":"2026-04-06T02:50:03.539Z"}
|
||||
{"cache_key":"848330befbf48870d335ff06bd167900f237b41fd9b2bc926f552f52613c346d","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.endDate","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"End date","text_hash":"14303aa0c4a08d390e1180d9ed4ecbad43d4c4176d82ea8b8ae3f4b648b07380","tgt_lang":"tr","translated":"Bitiş tarihi","updated_at":"2026-04-05T17:15:14.133Z"}
|
||||
@@ -498,6 +501,7 @@
|
||||
{"cache_key":"99ec41e94c519ca41217773ebe8b1d47a48db28a923ae2615793881e014a31e4","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.toPlaceholder","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"+1555... or chat id","text_hash":"2b1a495ebdfbfedff6e058021fd92596414bf48531d43c217161eb32013db085","tgt_lang":"tr","translated":"+1555... veya sohbet kimliği","updated_at":"2026-04-05T17:16:24.273Z"}
|
||||
{"cache_key":"9a3c7bf4d6cd6a42161d6b617f6a4fb43ca04d9079e4afe84145652c7de17642","model":"gpt-5.4","provider":"openai","segment_id":"subtitles.usage","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"API usage and costs.","text_hash":"9ee4834076606d017e613a984a00c778fc0656d63fcc32dbf32c37ebb4cfdac3","tgt_lang":"tr","translated":"API kullanımı ve maliyetler.","updated_at":"2026-04-05T17:14:07.287Z"}
|
||||
{"cache_key":"9a6591fe34ed37b011a0001946ea9b924ecbfcd3ff19ebdc9c7375928b057799","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.deliveryNotRequested","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Not requested","text_hash":"2bb186b55caf8791978bf5137df84ff6bf7e8110db38db6c85c1485679e8e679","tgt_lang":"tr","translated":"Talep edilmedi","updated_at":"2026-04-05T17:16:06.352Z"}
|
||||
{"cache_key":"9aab3059147eb27679bdf9f8fa3e360fce304b73779f31086467c5a8c817ec11","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"tr","translated":"kısmi","updated_at":"2026-05-03T18:28:44.435Z"}
|
||||
{"cache_key":"9aec7935e23d1bfcc965720ff660ed8f54ba254244f643b6eb2231bc43620181","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.whatHeading","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"What should it do?","text_hash":"1970bec54875f6bdd238a7b9e2889e98fb652edab85498a790d73c937e6cdb76","tgt_lang":"tr","translated":"Ne yapmalı?","updated_at":"2026-04-29T20:15:14.846Z"}
|
||||
{"cache_key":"9b3fac50741f44bc2b9dbbb2510f67be80e313e255a26bc90f4fa82bfe1d3606","model":"gpt-5.4","provider":"openai","segment_id":"cron.jobState.status","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Status","text_hash":"920e413c7d411b61ef3e8c63b1cb6ad058d5f95f8b481dbafe60248387d8c355","tgt_lang":"tr","translated":"Durum","updated_at":"2026-04-05T17:16:34.100Z"}
|
||||
{"cache_key":"9b67bfa9cefa8e775d80b722bc6fc4ec8adb35d9ee739902774b3675ba6ebc51","model":"gpt-5.4","provider":"openai","segment_id":"chat.toolCallsToggle","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Toggle tool calls and tool results","text_hash":"3f0b9d1bac10f5a440a582bc49b27c3a912dbd72fb09b4afdc8c8460f53efa89","tgt_lang":"tr","translated":"Araç çağrılarını ve araç sonuçlarını aç/kapat","updated_at":"2026-04-05T17:15:52.927Z"}
|
||||
@@ -762,6 +766,7 @@
|
||||
{"cache_key":"e3456f647b948c656e96e84680acc4e30b1ce2cb12e7c674ef9f485499c4022c","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.howHint","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Choose how results are delivered.","text_hash":"6c3235002460d7c6395e387dd0e3a199a8be40a0ba819a675111fb90b04f48a9","tgt_lang":"tr","translated":"Sonuçların nasıl iletileceğini seçin.","updated_at":"2026-04-29T20:15:14.846Z"}
|
||||
{"cache_key":"e47e591888a191ac23cada407a450deed32bf09006bb76901a73a5445bdd9807","model":"gpt-5.4","provider":"openai","segment_id":"common.call","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Call","text_hash":"d6e645b7d2b2da646d44130464143171935ffa47558b4e36c05df175de7197ba","tgt_lang":"tr","translated":"Ara","updated_at":"2026-04-06T02:50:00.165Z"}
|
||||
{"cache_key":"e55e617f659df81974d37585b97a45be195d49b35a93bfc812cab1724f282618","model":"gpt-5.5","provider":"openai","segment_id":"languages.fa","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"فارسی (Persian)","text_hash":"16396f00e9a73b7e86b42f29489fb5939ce17072cf9ee031a9186490da5e05e3","tgt_lang":"tr","translated":"فارسی (Farsça)","updated_at":"2026-04-29T17:36:58.030Z"}
|
||||
{"cache_key":"e57d0fe0abb6abb6ecd4b84ff95094bfed826ea1c81faa1e85429f575442735d","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"tr","translated":"{status}: {pending} beklemede, {stale} güncel değil, {cached} önbellekte","updated_at":"2026-05-03T18:28:44.435Z"}
|
||||
{"cache_key":"e660bb7d89840113f22b260b177b5051960a68f1fa3a4e7560f1594853c03dd3","model":"gpt-5.4","provider":"openai","segment_id":"overview.stats.instances","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Instances","text_hash":"aa8c181ac3381dcd5890e42f64315a2540a9c7b35897570cf72f7ec1227e52e3","tgt_lang":"tr","translated":"Örnekler","updated_at":"2026-04-05T17:14:13.050Z"}
|
||||
{"cache_key":"e6c238e8fdab609e1370b13a01a2ead6bec66642ce167624a115365a0487e46c","model":"gpt-5.4","provider":"openai","segment_id":"overview.insecure.stayHttp","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"If you must stay on HTTP, set {config} (token-only).","text_hash":"d1a4cb0c430ca9f73d0dbb992f19d6e7e301e24acdc269d368b31fa1efd4ff1e","tgt_lang":"tr","translated":"HTTP kullanmaya devam etmeniz gerekiyorsa, {config} ayarlayın (yalnızca token).","updated_at":"2026-04-05T17:14:19.581Z"}
|
||||
{"cache_key":"e6d03c8767ffc835cdc34fe3ffd65f7d75a4a18318695d78e8799902f7ebb495","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.bannerHelp","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"HTTPS URL to a banner image","text_hash":"5feb792028cf20b11294d2bed052e34770970d0a8a991fdc8eeb39045a9c42ca","tgt_lang":"tr","translated":"Bir banner görselinin HTTPS URL'si","updated_at":"2026-04-06T02:50:10.967Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:15:28.512Z",
|
||||
"generatedAt": "2026-05-03T18:28:47.748Z",
|
||||
"locale": "uk",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
{"cache_key":"146b1d71e658605630a113512aec759368174abcdfb76ac6fdb11e41765d0f47","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.noAgentData","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"No agent data","text_hash":"a40dc61b67f59dc2113e56ffa5b63c02fccdcfc344f6defedc45fa9189ea4611","tgt_lang":"uk","translated":"Немає даних про агентів","updated_at":"2026-04-05T17:23:06.427Z"}
|
||||
{"cache_key":"14759d8b5f614c1ccba89b4279894d8b41a8e1e7b4b62e95911261a9eba808d9","model":"gpt-5.4","provider":"openai","segment_id":"overview.access.showPassword","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Show password","text_hash":"6aeaa6a53d09dcad071fdda6280b1e7c42aa164cd0514304ff162e7da440ffaa","tgt_lang":"uk","translated":"Показати пароль","updated_at":"2026-04-20T06:26:53.139Z"}
|
||||
{"cache_key":"1544326b2086955d58354fe0620634c868802d308e330cc27f0e7304d77bdef5","model":"gpt-5.4","provider":"openai","segment_id":"overview.cards.recentSessions","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Recent Sessions","text_hash":"f59b46c265d8d38fe5a10d81ea3b800931d2dc2c8a0ee180c5d8247ba7545cb7","tgt_lang":"uk","translated":"Нещодавні сеанси","updated_at":"2026-04-05T17:22:36.629Z"}
|
||||
{"cache_key":"15986dc7056c3fe2bf27951893fdeb974b120fece77ffb637ab0cd0ddad2bca2","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"uk","translated":"оновлення","updated_at":"2026-05-03T18:28:47.597Z"}
|
||||
{"cache_key":"160b70e159ba5f8b0ce468d24b5e5eead565f5e0f25b02481386baa225e77e82","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.timeoutPlaceholder","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Optional, e.g. 90","text_hash":"6df8499092f2542448e280448a6915fe0d1b5354749ad0170108e193bfd23583","tgt_lang":"uk","translated":"Необов’язково, наприклад 90","updated_at":"2026-04-05T17:23:41.705Z"}
|
||||
{"cache_key":"164c646d8f7e7c5e8c48e9ec358deee72640de125d84e6cc7f9e976271f26d8d","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.diary.older","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Older","text_hash":"03281c889c2869e091390f9ad5dd13f0f0e46b42c9c4698f857902451deb3450","tgt_lang":"uk","translated":"Старіші","updated_at":"2026-04-06T02:50:52.463Z"}
|
||||
{"cache_key":"1652b613c87c8560a2ad5f4fff78fe2c2dfcabdc7e2f14fade2ff2154ea8c305","model":"gpt-5.4","provider":"openai","segment_id":"chat.showCronSessions","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Show cron sessions","text_hash":"0cc0314eb8ffe4f1b14e774b3eec8f0433cc0ab073f396ca789d6ee35cb37385","tgt_lang":"uk","translated":"Показати сеанси Cron","updated_at":"2026-04-05T17:23:20.907Z"}
|
||||
@@ -503,6 +504,7 @@
|
||||
{"cache_key":"94e24257fa988236ca4fb0f6e5bf467fc146717a5096b06526228d930c65be89","model":"gpt-5.4","provider":"openai","segment_id":"overview.cards.modelAuthExpiresIn","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"expires {when}","text_hash":"a70e9d68758ae6b1c6bbe34b53bfe111aaad9a6ef498e98f3b8210d43be64196","tgt_lang":"uk","translated":"спливає {when}","updated_at":"2026-04-15T05:45:16.519Z"}
|
||||
{"cache_key":"94f69583345cf957c2d86c80afca25208983330bed2997345cf4d9bf8fec8b6f","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.wed","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Wed","text_hash":"58339f45df960408051cce029b5b76f049c70c0cb1059b97ff3d4d6ed7a68644","tgt_lang":"uk","translated":"Ср","updated_at":"2026-04-05T17:23:17.582Z"}
|
||||
{"cache_key":"952558b2f0698db8344711cbe711fcab6f6750b3d7c1d6720c10c987c85d7da8","model":"gpt-5.4","provider":"openai","segment_id":"usage.export.dailyCsv","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Daily CSV","text_hash":"84cace61dc7bdfca594e2a15b42e4325fb280c3dc02c4059b824fa01f485721d","tgt_lang":"uk","translated":"Щоденний CSV","updated_at":"2026-04-05T17:22:42.565Z"}
|
||||
{"cache_key":"95508352e6325e5f35695ffcbd73f753a9e93f12115931cee5e7d8b367bbc0f2","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"uk","translated":"застаріло","updated_at":"2026-05-03T18:28:47.597Z"}
|
||||
{"cache_key":"956b4fd352da5cbdef4921bd02ec04a0a4777f0586b6cbe17e3759e53b700b46","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.stagedDescription","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Replay candidates pulled from older daily log entries.","text_hash":"66e7a8b3e05e33e61428644192797de53a97e2f142f9b1b475847fa601e4fdfd","tgt_lang":"uk","translated":"Кандидати для повторного відтворення, взяті зі старіших записів щоденного журналу.","updated_at":"2026-04-10T07:59:34.687Z"}
|
||||
{"cache_key":"958de860f406c8b187fe2ba5309154dab332ceb3f7f99677d377bb152e09e079","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.tailscaleDocsLink","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Docs: Tailscale Serve","text_hash":"331a0eb6bb5691842d5881802ac7756e67763d8687f2ea5d96d4d33b06700c6e","tgt_lang":"uk","translated":"Документація: Tailscale Serve","updated_at":"2026-04-20T06:26:53.139Z"}
|
||||
{"cache_key":"96302a5c245bc7d1e09a998ba766facc22615fe1cf668a75137a35fb3cb73d13","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.newestFirst","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Newest first","text_hash":"ffb6f5764bddb68c49177c75a9b4a9638878f862bd5d3b1375b8eb1d40538e15","tgt_lang":"uk","translated":"Спочатку новіші","updated_at":"2026-04-05T17:23:29.777Z"}
|
||||
@@ -548,6 +550,7 @@
|
||||
{"cache_key":"a476a826ae23e65f6bd54abf7915e0321f02623c310991787dedb73fdfd86e27","model":"gpt-5.4","provider":"openai","segment_id":"usage.breakdown.cacheWrite","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Cache Write","text_hash":"1471a902cb72f0173bb438d603c33897462936c35a4155e71568e70fe65e2af4","tgt_lang":"uk","translated":"Запис у кеш","updated_at":"2026-04-05T17:22:48.250Z"}
|
||||
{"cache_key":"a48315e469d2e40b6c80814fcbefc2396baada95519a72a3eb0eb1710e76d896","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.bioHelp","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"A brief bio or description","text_hash":"13c4378cf9fb4be11b124be3ee805740faafd2e3cf09936e4186ae037cade948","tgt_lang":"uk","translated":"Коротка біографія або опис","updated_at":"2026-04-06T02:50:37.633Z"}
|
||||
{"cache_key":"a49fdddebc62af616322e8bbe459bc81e5214c31c7ca048e7d2e615e64cff365","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.noModelData","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"No model data","text_hash":"2ea49a2ede0e209909d635b8d54ae10a4d85b76db4119f638c76a74f470a5960","tgt_lang":"uk","translated":"Немає даних про моделі","updated_at":"2026-04-05T17:23:06.427Z"}
|
||||
{"cache_key":"a584618d4d77135a967cd23304a751ad1232dbcc473437f9cc48941cbec08426","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"uk","translated":"частково","updated_at":"2026-05-03T18:28:47.597Z"}
|
||||
{"cache_key":"a5c7c983ba53ab767ac91cfdae8bcf624c79b393c519d5f49a7a83a8f6d022b3","model":"gpt-5.4","provider":"openai","segment_id":"overview.cards.modelAuthUsageLeft","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"{pct}% left","text_hash":"053a3cf57bb8573236e95f1b037efd47f4433df82c03dbe65ae747a21afdbf70","tgt_lang":"uk","translated":"Залишилося {pct}%","updated_at":"2026-04-15T05:45:16.519Z"}
|
||||
{"cache_key":"a6839b8ecd657cd8e7cc36a180c5b2dd01d84cfe9a1ac1cca4703f6c1e8ce042","model":"gpt-5.4","provider":"openai","segment_id":"channels.health.subtitle","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Channel status snapshots from the gateway.","text_hash":"dd20cf1ff7d7a1ca7fbc895ff32abb1bb87f5a36a1ac809ef1ed7c119b46629b","tgt_lang":"uk","translated":"Знімки стану каналу з Gateway.","updated_at":"2026-04-06T02:50:34.009Z"}
|
||||
{"cache_key":"a6c47c2740df92995fecb29afcca0fdb55cb37d6f5bb807d8de3ff447f53fdcf","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.errorHint","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Error rate = errors / total messages. Lower is better.","text_hash":"4626170f699e5b41fb2a4044fc94204ca8b706a9878382c9d57d97fbb7f8b1f9","tgt_lang":"uk","translated":"Рівень помилок = помилки / загальна кількість повідомлень. Менше — краще.","updated_at":"2026-04-05T17:23:02.941Z"}
|
||||
@@ -580,12 +583,14 @@
|
||||
{"cache_key":"ad71a8ac5fab1c840818622a2ffaba5f2287d21cf9bb10616482995d2781c334","model":"gpt-5.4","provider":"openai","segment_id":"cron.errors.invalidRunTime","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Invalid run time.","text_hash":"51465fa3cb94966411a49d8d1972fe997ac028fd249e05df55db8a2179975b48","tgt_lang":"uk","translated":"Недійсний час запуску.","updated_at":"2026-04-05T17:23:56.109Z"}
|
||||
{"cache_key":"ad97d9acf17e17610744d5f7aced4bd70470ab3440991f0562f449159ef82581","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.sessionsInRange","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"of {count} in range","text_hash":"6e63cea82a473651b00fb46a523cb60e7aeb7a937012c33f46313e28fc685a44","tgt_lang":"uk","translated":"із {count} у діапазоні","updated_at":"2026-04-05T17:23:02.941Z"}
|
||||
{"cache_key":"ae029bbd9c9d6b8870510c674965f4cf02ee14f2cc7940b50021252275cdd7d8","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.updatedPrefix","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"updated","text_hash":"27eb5e51506c911f6fc4bb345c0d9db6f60415fceab7c18e1e9b862637415777","tgt_lang":"uk","translated":"оновлено","updated_at":"2026-04-10T07:59:36.844Z"}
|
||||
{"cache_key":"ae114371a607189115293a17648bebb15b51f30b12964082a0617500e6f4efc4","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"uk","translated":"{status}: {pending} очікує, {stale} застаріло, {cached} кешовано","updated_at":"2026-05-03T18:28:47.597Z"}
|
||||
{"cache_key":"aec5d11a16251772db5d5db4935672ff93b8d3a4343244d1e51c504e8b5745f4","model":"gpt-5.4","provider":"openai","segment_id":"common.importFromRelays","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Import from Relays","text_hash":"b6a7b8934731285270b7f1671978dc0fc3147998f52405b2cc418eb4927bfc99","tgt_lang":"uk","translated":"Імпортувати з Relays","updated_at":"2026-04-06T02:50:29.304Z"}
|
||||
{"cache_key":"aed56fd5cf0ffa934a66e1f001b3bfacf34500b5bee580c5b189a5658fb6b593","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.newJob","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"New Job","text_hash":"ddacafb76972da324383c04b284cdb4ab1f50620959a20f4682fafb325ee12df","tgt_lang":"uk","translated":"Нове завдання","updated_at":"2026-04-05T17:23:29.777Z"}
|
||||
{"cache_key":"aff138f036e68f1af40beaa4c12065cae1032db275a2c1d552c7cf349913993c","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.execution","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Execution","text_hash":"a45cd4bd0998e5683cdf4839b883fc0c77599eecfa9c7b658b32dbbd499a8039","tgt_lang":"uk","translated":"Виконання","updated_at":"2026-04-05T17:23:36.842Z"}
|
||||
{"cache_key":"b02349e97224e3b99e071c9d6b807657896fd08ba5e2596f9ed79f37c082112c","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.selectSession","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Select session","text_hash":"803814693885dfb92ec8373f4c02f31015541e0e97e437287cdd0db681e0dae6","tgt_lang":"uk","translated":"Вибрати сеанс","updated_at":"2026-04-29T20:15:08.490Z"}
|
||||
{"cache_key":"b06f2806edb703c4d94a3d22de79576e69aa74f0ba94c5aa0ef315da431d8e5d","model":"gpt-5.5","provider":"openai","segment_id":"common.none","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"none","text_hash":"140bedbf9c3f6d56a9846d2ba7088798683f4da0c248231336e6a05679e4fdfe","tgt_lang":"uk","translated":"немає","updated_at":"2026-04-29T20:15:08.490Z"}
|
||||
{"cache_key":"b09fc4336950d79247c7061d460538bfd5e059939992763ec33addb0e25642d0","model":"gpt-5.4","provider":"openai","segment_id":"overview.cards.modelAuthExpired","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"{count} expired","text_hash":"eb1d6d89839cfe3ff9f5a383e80448eaaa75d0e285cbdb9d5182d1abe562147f","tgt_lang":"uk","translated":"{count} прострочено","updated_at":"2026-04-15T05:45:16.519Z"}
|
||||
{"cache_key":"b0a3c0d26a4449d7760e4d2571237c8c7c57f3e2c3d15a7e8e572648a34650aa","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"uk","translated":"Кеш використання перебудовується у фоновому режимі. Відображені підсумки можуть бути застарілими.","updated_at":"2026-05-03T18:28:47.597Z"}
|
||||
{"cache_key":"b0b3017cb0b7d306520e235f8758838968098f5c4bec89cf9bf67e48667db22f","model":"gpt-5.4","provider":"openai","segment_id":"usage.query.tip","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Tip: use filters or click bars to refine days.","text_hash":"3062d0128ec3be6245bfc99d9cd9370d6911d947f90ada05baff887e7fe8c15c","tgt_lang":"uk","translated":"Порада: використовуйте фільтри або натискайте на стовпчики, щоб уточнювати дні.","updated_at":"2026-04-05T17:22:42.565Z"}
|
||||
{"cache_key":"b0ff19f7508a7accfb6f0a52b948bcc63f3bb453db016cf7be96eccc5e730881","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.deliverySection","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Delivery","text_hash":"52bfe584a5fc450539e2aa651b990fa2415060492a243816ab2994292089c6fd","tgt_lang":"uk","translated":"Доставка","updated_at":"2026-04-05T17:23:41.705Z"}
|
||||
{"cache_key":"b10b35f696305903f1520d479791821fe58b86a2d3f5fc60fa6f75f6a2caf5f5","model":"gpt-5.5","provider":"openai","segment_id":"chat.runningVersion","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"running v{version}","text_hash":"71317eeb4277d213186524c216b02af34724cd4ee7bd2531c24df009b373519e","tgt_lang":"uk","translated":"працює v{version}","updated_at":"2026-04-29T20:15:18.764Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:16:51.077Z",
|
||||
"generatedAt": "2026-05-03T18:29:00.531Z",
|
||||
"locale": "vi",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
{"cache_key":"0d301d53d245dbcaa5366856ed7a5405293e62db11795431f6c9c4cbb26b46b3","model":"gpt-5.5","provider":"openai","segment_id":"agents.context.default","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Default","text_hash":"21b111cbfe6e8fca2d181c43f53ad548b22e38aca955b9824706a504b0a07a2d","tgt_lang":"vi","translated":"Mặc định","updated_at":"2026-04-29T19:28:07.209Z"}
|
||||
{"cache_key":"0d8444aa41853929314bf58ad556512d2df9121a6687f1cffd171772c7941342","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.whenHint","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Pick a schedule. You can fine-tune it later.","text_hash":"afaccdbedfd69f7618dc57e8b77feb2baf257aa8b5d425cd6baf5ac5f689b67a","tgt_lang":"vi","translated":"Chọn lịch. Bạn có thể tinh chỉnh sau.","updated_at":"2026-04-29T20:16:50.924Z"}
|
||||
{"cache_key":"0d8c7eea9762350b687d65d798e4c43d24f1738944a668ee63273eedac347261","model":"gpt-5.5","provider":"openai","segment_id":"channels.nostr.profile","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Profile","text_hash":"d696a35bdd1883da07a8d6c41bb7a3153381b23aa197629ee273479a6eaa5a9c","tgt_lang":"vi","translated":"Hồ sơ","updated_at":"2026-04-29T17:39:38.451Z"}
|
||||
{"cache_key":"0d9604a269662a2c7584374eece4c850be36ef38a7496f32dc06051b96525667","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"vi","translated":"{status}: {pending} đang chờ, {stale} lỗi thời, {cached} đã lưu vào bộ nhớ đệm","updated_at":"2026-05-03T18:29:00.379Z"}
|
||||
{"cache_key":"0e0b01636aa99c45a67433c7fc5234e0bc6ae597325dbddea99a5833b4250910","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.tabs.diary","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Diary","text_hash":"bc64125d752f42799834eb82cdc0967a265728ba33c0a9fce365bfd300dff964","tgt_lang":"vi","translated":"Nhật ký","updated_at":"2026-04-29T17:40:22.928Z"}
|
||||
{"cache_key":"0ea878f806696eac60d9653ef44df6334803ce50d66161db61fc701a82a9948e","model":"gpt-5.5","provider":"openai","segment_id":"languages.ko","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"한국어 (Korean)","text_hash":"30f959f34501d524b06cf98b3711cdffea10a6479a316cf2c030362e8d274740","tgt_lang":"vi","translated":"한국어 (Tiếng Hàn)","updated_at":"2026-04-29T17:41:29.250Z"}
|
||||
{"cache_key":"0ebe430e9657ea243c006252e6390fda687163edac6619191e20a3da00ac1bd1","model":"gpt-5.5","provider":"openai","segment_id":"common.copyCode","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Copy code","text_hash":"49a0053f3b0d5045a4ef3edfe5c39be60a7ea272cc22b7c33d646624346ccd4d","tgt_lang":"vi","translated":"Sao chép mã","updated_at":"2026-04-29T20:16:33.852Z"}
|
||||
@@ -113,6 +114,7 @@
|
||||
{"cache_key":"1c65a6cfc9e5d8110d6b3b270621de434f54e32127f54191baaf3deae9fcc705","model":"gpt-5.5","provider":"openai","segment_id":"subtitles.dreams","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Memory dreaming, consolidation, and reflection.","text_hash":"1021dffa2e60b2097acfe27fae40d08fb573eeb6d8bc9fee9d25586431cd67a2","tgt_lang":"vi","translated":"Mơ bộ nhớ, hợp nhất và phản chiếu.","updated_at":"2026-04-29T17:39:59.232Z"}
|
||||
{"cache_key":"1c73aab96076700bb91748259c65a94634593a82d224952c7ab65e9de299974f","model":"gpt-5.5","provider":"openai","segment_id":"tabs.debug","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Debug","text_hash":"1a03bd2fd107c453f3183e30b9716f82200671e8270fbbefbe602f5a48705527","tgt_lang":"vi","translated":"Gỡ lỗi","updated_at":"2026-04-29T17:39:55.530Z"}
|
||||
{"cache_key":"1c741a672d97bab7541a8bb36ac68ea8685fd0a2eb511a5517e0a7b9876db71e","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.noMessagesMatch","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"No messages match the filters.","text_hash":"64a575d4d77472b6351168a4fadda155dd13148122fa7f9f3e69c721df41dde9","tgt_lang":"vi","translated":"Không có tin nhắn nào khớp với bộ lọc.","updated_at":"2026-04-29T17:41:18.008Z"}
|
||||
{"cache_key":"1ca8174b30fd911f35ad60296882d2857be3af20f203bcddb329c79eee637e6c","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"vi","translated":"lỗi thời","updated_at":"2026-05-03T18:29:00.379Z"}
|
||||
{"cache_key":"1cbb9658ae3e51b742f65453452948c74c7287dbdb1a9efd647efa7501f400e9","model":"gpt-5.5","provider":"openai","segment_id":"cron.jobs.loadMore","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Load more jobs","text_hash":"d9abcbfc29224d885b77becd9d55da36280d989aab480878f1a4a461f343dc55","tgt_lang":"vi","translated":"Tải thêm tác vụ","updated_at":"2026-04-29T17:41:37.285Z"}
|
||||
{"cache_key":"1d048247c0c6889e7a89fb986b3de1b3ddfbc81b126f4332cc6099bedc334bd3","model":"gpt-5.5","provider":"openai","segment_id":"overview.cards.cost","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Cost","text_hash":"204a5eb2cd28bcfdf3be9f8c765948e9e831609e3c57048cdbd6b8a94cf49126","tgt_lang":"vi","translated":"Chi phí","updated_at":"2026-04-29T17:40:15.142Z"}
|
||||
{"cache_key":"1d1d9f43f4c08981afaff596a5d0b25c6ab6dae3d092d58785181c5467d1e447","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.checkpoint","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"{count} checkpoint","text_hash":"a3464267384f9c0267ca207515e3c578f8677f0ba6a365359fec630ef3d66e57","tgt_lang":"vi","translated":"{count} điểm kiểm tra","updated_at":"2026-04-29T20:16:43.294Z"}
|
||||
@@ -178,6 +180,7 @@
|
||||
{"cache_key":"2e46ef7d9cd6d1bdbc81965c1ec4c52137886cc2fb23b47b80edb21192dee8ec","model":"gpt-5.5","provider":"openai","segment_id":"usage.filters.clear","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Clear","text_hash":"83b12c2216efb4fdc924e1deb5182e905e4926ed0c1c324d467107f46d5a26a9","tgt_lang":"vi","translated":"Xóa","updated_at":"2026-04-29T17:40:47.920Z"}
|
||||
{"cache_key":"2e7143b7d41b13e4849ed8d27c6a9bf270e16788817cca8151658ca4ec70a18b","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.userToolInputTokens","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"User + tool input tokens","text_hash":"55a5b0c65d1ad616ec3eecaaea0f7a76fafa1ec51d2c5f5ad798abb2e8e72699","tgt_lang":"vi","translated":"Token đầu vào của người dùng + công cụ","updated_at":"2026-04-29T17:41:13.544Z"}
|
||||
{"cache_key":"2ea661a52c6e4ccc650d5891f335aecc8f177f68b1db86cdb6e829dc8cb96554","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.avgTokens","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Avg Tokens / Msg","text_hash":"1f05d402adffc61f856e1a7635fe233c07b897448cae656802b70f7b3c521c88","tgt_lang":"vi","translated":"Token TB / Tin nhắn","updated_at":"2026-04-29T17:40:58.020Z"}
|
||||
{"cache_key":"2eb6c1d64977bd3c3f8279268fe3ae49e36daf76b458532bbb69360b3a9cd89b","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"vi","translated":"Bộ nhớ đệm mức sử dụng đang được xây dựng lại trong nền. Tổng số hiển thị có thể đã lỗi thời.","updated_at":"2026-05-03T18:29:00.379Z"}
|
||||
{"cache_key":"2edd87e245baaff77384c5ac37b47cae2b03c5427c36860456e8787f19e813ed","model":"gpt-5.5","provider":"openai","segment_id":"tabs.agents","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Agents","text_hash":"279b44d2ab4b40c0fc132f8f3051293544cca91de9c8aa14f2cd29adb132b0ee","tgt_lang":"vi","translated":"Agent","updated_at":"2026-04-29T17:39:51.536Z"}
|
||||
{"cache_key":"2f0e71ced8963a423fb4d2503f79c2781cc48551929d313b76942638ffb6b0be","model":"gpt-5.5","provider":"openai","segment_id":"common.importing","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Importing…","text_hash":"c01c4324f1fa14fc76957936626e11a5150c24e748dbd08cc46848dfcbe37d00","tgt_lang":"vi","translated":"Đang nhập…","updated_at":"2026-04-29T17:39:34.631Z"}
|
||||
{"cache_key":"2f262eaee3e4931d097680ee146c618a521c139cd4e6c7b70f8bc59564078158","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.noSessions","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"No sessions found.","text_hash":"e5ceb296fb28c05c8969bc29d1cf4ba599004612c035868a2ad2bb7ff3d223f2","tgt_lang":"vi","translated":"Không tìm thấy phiên nào.","updated_at":"2026-04-29T20:16:38.864Z"}
|
||||
@@ -609,6 +612,7 @@
|
||||
{"cache_key":"a04699b54c0f2b471e92a68b7e3bf8bf6327f3374da1f97c537462062888bb99","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.createSubtitle","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Create a scheduled wakeup or agent run.","text_hash":"63ed10abfd41f9a26d9630dfb564122e33a033a0abcee985c0c935076fa0e269","tgt_lang":"vi","translated":"Tạo một lần đánh thức hoặc chạy agent theo lịch.","updated_at":"2026-04-29T17:41:43.271Z"}
|
||||
{"cache_key":"a0962c33e83dde8b4e94020a8b7102d83b586eba9c0b76cea672576052de9a4c","model":"gpt-5.5","provider":"openai","segment_id":"usage.metrics.sessions","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"sessions","text_hash":"1225ae6c1ae69dcb4ee4781b703e12206f3b549cd3ca151070a8d8d8f371dd71","tgt_lang":"vi","translated":"phiên","updated_at":"2026-04-29T17:40:44.671Z"}
|
||||
{"cache_key":"a096a02f38ef844d9c0ab94181653dcc5972083115e4cc80af8a444b5e652186","model":"gpt-5.5","provider":"openai","segment_id":"dreaming.trace.emptySignals","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"No active signals.","text_hash":"0d9d086593baedf3d8af5a8f30c9bdb495209fdb3413e02f1e74c6f8ce77e876","tgt_lang":"vi","translated":"Không có tín hiệu đang hoạt động.","updated_at":"2026-04-29T17:40:35.560Z"}
|
||||
{"cache_key":"a1cfcb05305c4c0330d110d825ae40273e09553b315ffdd99cdf7ff6018bd6b6","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"vi","translated":"đang làm mới","updated_at":"2026-05-03T18:29:00.379Z"}
|
||||
{"cache_key":"a1f573dcbbae929dad2b64d560e1a8dfc98e8284b4f29cfb6c1bdb046a1c5fc3","model":"gpt-5.5","provider":"openai","segment_id":"overview.access.togglePasswordVisibility","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Toggle password visibility","text_hash":"1016c07b0f58d365790cc799fb215afd92fde1aeb5ac47cd17260e327465b2d6","tgt_lang":"vi","translated":"Bật/tắt hiển thị mật khẩu","updated_at":"2026-04-29T17:39:59.232Z"}
|
||||
{"cache_key":"a21e826bcc8434eae34d6bf630b38b649b10e17abffc7fdcc2134d938f3c7d25","model":"gpt-5.5","provider":"openai","segment_id":"instances.title","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Connected Instances","text_hash":"2530c88aeba856f87750a97e01ee81c93f02da297a96acd456d3ff0adbb60a3d","tgt_lang":"vi","translated":"Phiên bản đã kết nối","updated_at":"2026-04-29T17:39:46.969Z"}
|
||||
{"cache_key":"a2b56f3269a4cadd6c7520eec4c2c74a9143301751a3f0dd1cade2ad47b72bf9","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.reset","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Reset","text_hash":"daee7606b339f3c339076fe2c9f372a3ff40c8ee896005d829c7481b64ca5303","tgt_lang":"vi","translated":"Đặt lại","updated_at":"2026-04-29T17:41:10.252Z"}
|
||||
@@ -944,6 +948,7 @@
|
||||
{"cache_key":"f8918d5bcfc25605038c50e97a6b4031b72ffe9391622b17d99b1593be44cfcb","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.seconds","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Seconds","text_hash":"381a8e9699052f3a958001510611a9634e7cef8aa6a1421cb7e7f6e119f91edc","tgt_lang":"vi","translated":"Giây","updated_at":"2026-04-29T17:42:05.504Z"}
|
||||
{"cache_key":"f89a7ebf0283ed011a98668d02023fb64b6454e4ec1920b92a1572301e912e2c","model":"gpt-5.5","provider":"openai","segment_id":"overview.access.language","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Language","text_hash":"a4fe65264ef7dbb38d104b1e81eb3350f3142f3d16f32bdec39b1d9b42c1b8d1","tgt_lang":"vi","translated":"Ngôn ngữ","updated_at":"2026-04-29T17:39:59.232Z"}
|
||||
{"cache_key":"f8a2ac52658e3a749771c09c3819d5277d262aa4dbfba84332e0d7ad663ea7a8","model":"gpt-5.5","provider":"openai","segment_id":"common.secondsAgo","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"{count}s ago","text_hash":"244073ecb2be8fe875a37bcf7023ff32fb21f7c64e5d29e0ae62931a84c98a6a","tgt_lang":"vi","translated":"{count} giây trước","updated_at":"2026-04-29T17:39:34.632Z"}
|
||||
{"cache_key":"f9927d6401fc14c6e946303ded6219b02610cccc00f936d447dc5939b5f53d3e","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"vi","translated":"một phần","updated_at":"2026-05-03T18:29:00.379Z"}
|
||||
{"cache_key":"f99f5b9b69c28bc45fa5deb6d9cce7a2100bb981fe74374ce7054f241e1505d2","model":"gpt-5.5","provider":"openai","segment_id":"debug.modelsTitle","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Models","text_hash":"d17d2d78d76e6a6cd13048de225e107ac73de4aa5f8914e58a0cfaa9698c373e","tgt_lang":"vi","translated":"Mô hình","updated_at":"2026-04-29T19:28:19.773Z"}
|
||||
{"cache_key":"f9d67cae1f9868788605d7a18e0e8e0ad317f4669262d75b39f786a179879360","model":"gpt-5.5","provider":"openai","segment_id":"usage.overview.messagesHint","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Total user and assistant messages in range.","text_hash":"fb47849222e3d9e020ec16c1a413c4a9d28d7028ba5496612a57ce0c597fc09a","tgt_lang":"vi","translated":"Tổng tin nhắn của người dùng và trợ lý trong phạm vi.","updated_at":"2026-04-29T17:40:58.020Z"}
|
||||
{"cache_key":"fa0ac1c5b17442491b4030c60eb1fe4cafffec40099cce94cb1a5b1d6e38d074","model":"gpt-5.5","provider":"openai","segment_id":"usage.presets.last7d","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"7d","text_hash":"a7c742643c7cc56cde61922fb5e8d3548a30b717e8e8b38bc5ec903f2c0be6d2","tgt_lang":"vi","translated":"7 ngày","updated_at":"2026-04-29T17:40:44.671Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:12:29.230Z",
|
||||
"generatedAt": "2026-05-03T18:28:13.442Z",
|
||||
"locale": "zh-CN",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -194,6 +194,7 @@
|
||||
{"cache_key":"53f2519904ff2bbb68230de027bc437c4db706ce3d0b8a34b23cb09b1064dd33","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.unpin","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Unpin filters","text_hash":"23469c54ab00aa5fd13e3d0972883842c36663409dd8f70022a84c9ea591d1d7","tgt_lang":"zh-CN","translated":"取消固定筛选","updated_at":"2026-04-05T17:10:38.781Z"}
|
||||
{"cache_key":"5407cfa47ff5c602f7fb6ddf788bb01e17224d82d714bb2871cb90aa79631c72","model":"gpt-5.4","provider":"openai","segment_id":"instances.lastInput","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Last input {time}","text_hash":"04c40c4d7fa4438b7d6afe2f3997bc427522d67e80f8adc42ee0269eed294760","tgt_lang":"zh-CN","translated":"上次输入 {time}","updated_at":"2026-04-06T02:47:42.475Z"}
|
||||
{"cache_key":"541a4f438a10e0da020ac32546c3e49fdf9fd9477888a879fec62759e8de1cad","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.howHeading","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"How should it work?","text_hash":"be35ecda9f6f7b651ba249b3f5cd27d5636347509afcf80b91e82a0d5043adcc","tgt_lang":"zh-CN","translated":"它应该如何工作?","updated_at":"2026-04-29T20:12:29.078Z"}
|
||||
{"cache_key":"546b514bd19b3c4a43add7d68af22a07cfc594530ed75f8724a12cbc7d40fad5","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"zh-CN","translated":"过期","updated_at":"2026-05-03T18:28:13.291Z"}
|
||||
{"cache_key":"55fb450dbca7cad708084652de29895cac584f4a7cbbb56a1b367b85856c13ee","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.expressionPlaceholder","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"0 7 * * *","text_hash":"1d726e4af41cb9434cb588e6a94a70b43003cf17c1913febed0bb86ccaadcb2e","tgt_lang":"zh-CN","translated":"0 7 * * *","updated_at":"2026-04-06T02:59:12.117Z"}
|
||||
{"cache_key":"56e76b0d813557b9b84efe721197e3af3e25787fe538f5b1ba125e6af71e7ba8","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.model","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Model","text_hash":"5e2c614c23f02239bc03c6c04fcb681950f9e72bf8fdff6be79c79841cbb10c0","tgt_lang":"zh-CN","translated":"模型","updated_at":"2026-04-05T17:10:38.781Z"}
|
||||
{"cache_key":"570f73b421f36251be6b0eb988b7235b051fd33a7b130c416f7d7e92bf04c569","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.header.on","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Dreaming On","text_hash":"061ed023b8699af1bcd0fdd2542b6327093052411dc5fb89c81fdc61e0ae6191","tgt_lang":"zh-CN","translated":"Dreaming 已开启","updated_at":"2026-04-06T02:47:45.405Z"}
|
||||
@@ -254,6 +255,7 @@
|
||||
{"cache_key":"74ccdeb2e592d38953ee5589af39bf8a1c5457f47af7e1f99427ba372c6c8c41","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.diary.waitingTitle","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"The diary is waiting","text_hash":"bce935f0c4eb2feb409016a0c4302e25aa76844d715b7f691bd40bff88d76039","tgt_lang":"zh-CN","translated":"日记正在等待","updated_at":"2026-04-06T02:47:45.405Z"}
|
||||
{"cache_key":"75967f878ed26abf7d39d80d58df600c402522d8c152ea2c465e1adda36d1223","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.overflowRetry","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"overflow retry","text_hash":"3584fcb50c1999ebb6da6e481789164e9b409fe3a9ecfc96d4f54e46fce130c9","tgt_lang":"zh-CN","translated":"溢出重试","updated_at":"2026-04-29T20:12:21.290Z"}
|
||||
{"cache_key":"75a6651267aa6bc2573f67f5b6bb4ef27b6fe1b32d2de97efa013f6d87bf7679","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.cronOption","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Cron","text_hash":"dd9d24965dbedc026915308732b77c1af68dcf52d3c0ca2421b1fdb0d197aca1","tgt_lang":"zh-CN","translated":"Cron","updated_at":"2026-04-06T02:59:12.117Z"}
|
||||
{"cache_key":"760e472bbd7df6fbed7fd4dce44eedfcecc765a9807bd257f27b514f1aa5a99e","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"zh-CN","translated":"{status}: {pending} 个待处理,{stale} 个过期,{cached} 个已缓存","updated_at":"2026-05-03T18:28:13.291Z"}
|
||||
{"cache_key":"762a0604f652829d10ffbd123d392db014d8db579fcb5e742e616620dc387399","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.hours","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Hours","text_hash":"21e8492938abc179410c21f3598f141c4c59a8bf2d3b4e475b7d83e10adfc00f","tgt_lang":"zh-CN","translated":"小时","updated_at":"2026-04-05T17:10:38.781Z"}
|
||||
{"cache_key":"763d8f3f0124afa2d8eb3bb205f4f1612aaa1083e8644c1bd0359fe186940075","model":"gpt-5.5","provider":"openai","segment_id":"common.delete","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Delete","text_hash":"e2d0a54968ead24efc0dffa6ac78fc606dceec34a0f586177a74a54cc2272cf8","tgt_lang":"zh-CN","translated":"删除","updated_at":"2026-04-29T20:12:12.208Z"}
|
||||
{"cache_key":"7785180dcdaa166bcb88cc0d7f3b688f9312b068f73d926fd15f8e647546dedb","model":"gpt-5.4","provider":"openai","segment_id":"overview.connection.authDocsTitle","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Control UI auth docs (opens in new tab)","text_hash":"896f065ce08f08bfcea282c0f911c7df7eefa8d7d8ed89f04157666f11afbf34","tgt_lang":"zh-CN","translated":"Control UI 身份验证文档(在新标签页中打开)","updated_at":"2026-04-20T06:26:06.957Z"}
|
||||
@@ -419,6 +421,7 @@
|
||||
{"cache_key":"bde58114bb0273382836de0999be3fe5833439fcb3f898f0df822e32e576b95a","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.offExplicit","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"off (explicit)","text_hash":"f1351f70a8c211140022d7dfe6a9908e38329fe93ac90e9c3a2bde2677f44520","tgt_lang":"zh-CN","translated":"关闭(显式)","updated_at":"2026-04-29T20:12:16.159Z"}
|
||||
{"cache_key":"bdf10ebcdd13662c5b2a4701c495ee39a753cc52c79e7c37f12ff9d03be6461c","model":"gpt-5.4","provider":"openai","segment_id":"common.running","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Running","text_hash":"f4ccae29e1bb0c20a124570a1b43f4347ea94bba9f84ffdfddd9c7445b126128","tgt_lang":"zh-CN","translated":"运行中","updated_at":"2026-04-06T02:47:28.112Z"}
|
||||
{"cache_key":"be28b7d6b61881af08617e11bf9600e4da2d22d93e4dc8ea95bf2a67515bddf3","model":"gpt-5.5","provider":"openai","segment_id":"lazyView.errorTitle","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Panel failed to load","text_hash":"f8c9d26f13962ea24220d44bb42badfec39d7f37b22dffdbb75a67c873cc044d","tgt_lang":"zh-CN","translated":"面板加载失败","updated_at":"2026-04-27T12:10:49.684Z"}
|
||||
{"cache_key":"be440d331b7a7b8758bc3758e01e94d805ee028d4ecf2d2e7c074d17119751fa","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"zh-CN","translated":"部分","updated_at":"2026-05-03T18:28:13.291Z"}
|
||||
{"cache_key":"be5f1b751f97a01f37aa7f3842dbf34872e991f4e6fb8ceb84bd128030eb3f87","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.fourAm","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"4am","text_hash":"c2a15a1684ec7e544681bcb5cc60f3c192fa87ed733d0a4b6b975db88724a9fb","tgt_lang":"zh-CN","translated":"凌晨 4 点","updated_at":"2026-04-05T17:11:02.649Z"}
|
||||
{"cache_key":"beae14a822f43b405bba3adc82abd9b82f152e72fec12113ce953c38f1c9e042","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.noneInRange","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"No sessions in range","text_hash":"9344ef674e0c4bb1278fcd880df4a06bb1a80b5a5eb50e65b3eea9844c7c1d74","tgt_lang":"zh-CN","translated":"范围内没有会话","updated_at":"2026-04-05T17:10:55.291Z"}
|
||||
{"cache_key":"bee3060904cfb8f4a06a0ec1c95ec9b812e3b6763f90e8c89fcac38dcf2a2b87","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.advanced.originDailyLog","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"replayed","text_hash":"ae94da4c1a6fabab4512e07bd7f597adec85b16c801a4b69251f9c4165010495","tgt_lang":"zh-CN","translated":"重放","updated_at":"2026-04-10T07:58:20.067Z"}
|
||||
@@ -487,6 +490,7 @@
|
||||
{"cache_key":"dd9e724ce0dfbbbe03bba98239b1f03b20aabf618ed0dfbb27f67263c91d6617","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.reset","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Reset","text_hash":"daee7606b339f3c339076fe2c9f372a3ff40c8ee896005d829c7481b64ca5303","tgt_lang":"zh-CN","translated":"重置","updated_at":"2026-04-05T17:10:59.816Z"}
|
||||
{"cache_key":"ddd4c8630cf82f22825bc82b88aa736e9b47f23a95ba0a065255f80d394f1b90","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.copy","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Copy","text_hash":"e21f935f11d7e966dbbae78da9daa378fe8142a14e7c0cd7434183005faa6c5c","tgt_lang":"zh-CN","translated":"复制","updated_at":"2026-04-05T17:10:55.291Z"}
|
||||
{"cache_key":"de125ef32cafbaf5a60cd1a19ef56bd6a4acd1f1500e25d5acbd10aee4e820ca","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.errors","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Errors","text_hash":"cb702378f31507efa79a2a2c6046050bc9f578f149c88e3c0a3d9532ab4b5300","tgt_lang":"zh-CN","translated":"错误","updated_at":"2026-04-05T17:10:49.551Z"}
|
||||
{"cache_key":"de1c596a632d65e8db0dc661a70fd8372867c43f0e95b3d80b990f2fbb2a0004","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"zh-CN","translated":"用量缓存正在后台重建。显示的总计可能不是最新的。","updated_at":"2026-05-03T18:28:13.290Z"}
|
||||
{"cache_key":"de49304e4b48c1edee968d7ab92c3437a4849cc03b11d1daf59c2082cf1b5fb8","model":"gpt-5.5","provider":"openai","segment_id":"cron.quickCreate.title","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"New Automation","text_hash":"a3a41a0f86882e4c32217466e6386277710a4a39c703ad802bc9c7fb7363f776","tgt_lang":"zh-CN","translated":"新建自动化","updated_at":"2026-04-29T20:12:29.078Z"}
|
||||
{"cache_key":"def7bbd7ca315761698662aba88560f1f5ca130afc49998023b03c97bd200b48","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.fourPm","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"4pm","text_hash":"6672b306c3e94cfd5b2e3c089a8904c7e213658513785372a8e2f27168597b6a","tgt_lang":"zh-CN","translated":"下午 4 点","updated_at":"2026-04-05T17:11:05.447Z"}
|
||||
{"cache_key":"e01fc6049ba3e766e8380f232484b8757ab92eed3686e22b299f0f42f54d595b","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.verbose","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Verbose","text_hash":"2cd57109145ab1cb603c7417e2c382756f332d0fc0f9a43b4d461f7d55f5a09f","tgt_lang":"zh-CN","translated":"详细","updated_at":"2026-04-29T20:12:16.159Z"}
|
||||
@@ -525,6 +529,7 @@
|
||||
{"cache_key":"f48990f7d86e26f164c70e2ab7d52e9ae651d778117dd8f894289fc5dcd04d4f","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.avgCostHintMissing","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.","text_hash":"4f1f6c997cb843b8b3552b70703757658b20057b69d22ded3a212c0d2778cf9d","tgt_lang":"zh-CN","translated":"当提供商报告成本时,每条消息的平均成本。此范围内部分或全部会话缺少成本数据。","updated_at":"2026-04-05T17:10:49.551Z"}
|
||||
{"cache_key":"f5bdd13ee717166d2e162fbe1b479e3ea368dccc747eb47db9651e661c549b99","model":"gpt-5.4","provider":"openai","segment_id":"login.showPassword","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Show password","text_hash":"6aeaa6a53d09dcad071fdda6280b1e7c42aa164cd0514304ff162e7da440ffaa","tgt_lang":"zh-CN","translated":"显示密码","updated_at":"2026-04-20T06:29:46.062Z"}
|
||||
{"cache_key":"f60c1f01b83cbbf1b9da20347ff4ab4c126f4c0ea8f619eddbf8472c098cd865","model":"gpt-5.4","provider":"openai","segment_id":"usage.overview.sessionsInRange","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"of {count} in range","text_hash":"6e63cea82a473651b00fb46a523cb60e7aeb7a937012c33f46313e28fc685a44","tgt_lang":"zh-CN","translated":"范围内共 {count} 个","updated_at":"2026-04-05T17:10:49.551Z"}
|
||||
{"cache_key":"f6d647767a7c3370782edb20602737e01976f836b36060eef65f70f9818b83fc","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"zh-CN","translated":"正在刷新","updated_at":"2026-05-03T18:28:13.291Z"}
|
||||
{"cache_key":"f715b9b8b6cebd8ce0b87f49e6b958c1c635d61233b72494acd97ed0c9ab80d5","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.tokensWrittenToCache","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Tokens written to cache","text_hash":"7abf026d6ca218c915b61286a73e94b7c71c6744b63702eab9bc41b4a3b20797","tgt_lang":"zh-CN","translated":"写入缓存的 Token","updated_at":"2026-04-05T17:10:59.816Z"}
|
||||
{"cache_key":"f792ae6043e35b33598d9b62655d467bd7e0e8c9b31a60b27f07fdfc88404b26","model":"gpt-5.4","provider":"openai","segment_id":"instances.showHosts","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Show hosts and IPs","text_hash":"fdc74f36ced00b110a24962032b06ee3f88f264688dab2b5dbdf4ccbccbcfa5b","tgt_lang":"zh-CN","translated":"显示主机和 IP","updated_at":"2026-04-06T02:47:42.475Z"}
|
||||
{"cache_key":"f85441b39cfe0269e218666109703d525ff93be653c4999a6b6a332d86a38058","model":"gpt-5.4","provider":"openai","segment_id":"common.loadConfig","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Load config","text_hash":"f76a62485a8c7d1c9687ca870a15baee71a2d70ca6edd2132e41b8211a786ade","tgt_lang":"zh-CN","translated":"加载配置","updated_at":"2026-04-06T02:47:30.960Z"}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"fallbackKeys": [],
|
||||
"generatedAt": "2026-04-29T20:12:36.557Z",
|
||||
"generatedAt": "2026-05-03T18:28:16.548Z",
|
||||
"locale": "zh-TW",
|
||||
"model": "gpt-5.5",
|
||||
"provider": "openai",
|
||||
"sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf",
|
||||
"totalKeys": 986,
|
||||
"translatedKeys": 986,
|
||||
"sourceHash": "d994d064e7880cb40c055c5201db0b9045c15f6abf37fac9b317e25e82b6b7b6",
|
||||
"totalKeys": 991,
|
||||
"translatedKeys": 991,
|
||||
"workflow": 1
|
||||
}
|
||||
|
||||
@@ -144,6 +144,7 @@
|
||||
{"cache_key":"35e69aa5b74fd081eabf3623f08caedcfbeadc1374dfc18d911852174d6fb3ef","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.header.on","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Dreaming On","text_hash":"061ed023b8699af1bcd0fdd2542b6327093052411dc5fb89c81fdc61e0ae6191","tgt_lang":"zh-TW","translated":"Dreaming 已開啟","updated_at":"2026-04-06T02:47:44.708Z"}
|
||||
{"cache_key":"35fc0eedae6bea3f3a7c9dc57f25b96da92c60f9c0a0c375dc68fb38a1b7ba8a","model":"gpt-5.4","provider":"openai","segment_id":"cron.errors.systemEventTextRequired","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"System event text required.","text_hash":"b6a571210cc1c529ced733fc25d04ce3fa25c68673d841b33dca8aebcffe130d","tgt_lang":"zh-TW","translated":"系統事件文字為必填。","updated_at":"2026-04-05T17:11:50.602Z"}
|
||||
{"cache_key":"3637ba88e5b81ee910dc802804990141d17c3b38cbbf01996876d22a8f9a941c","model":"gpt-5.4","provider":"openai","segment_id":"usage.presets.last30d","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"30d","text_hash":"e3ba17e322405f7f5887b350f7d398ab1c41fc5f7a758b7aab35bf23b1368ed6","tgt_lang":"zh-TW","translated":"30 天","updated_at":"2026-04-05T17:10:31.705Z"}
|
||||
{"cache_key":"368492ab7b683720a68bd8609884cd0c967afd72c30c9b0ac5c3a932862e2005","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.partial","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"partial","text_hash":"9834a14ab9bcaa0f6a8da71073617eac8f004e596a3fa11d807b84631b825d9d","tgt_lang":"zh-TW","translated":"部分","updated_at":"2026-05-03T18:28:16.397Z"}
|
||||
{"cache_key":"36a1b991928d81fe6d7b0864dbcaa1ecd5cf5f5ceff1da906346686c3b3d025a","model":"gpt-5.4","provider":"openai","segment_id":"usage.sessions.limitReached","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Showing first 1,000 sessions. Narrow date range for complete results.","text_hash":"677fc1d231d5e3a14126ba368b8c3c78db7b9ffafdd98259af67c64c07a4aa73","tgt_lang":"zh-TW","translated":"僅顯示前 1,000 個工作階段。請縮小日期範圍以取得完整結果。","updated_at":"2026-04-05T17:10:54.968Z"}
|
||||
{"cache_key":"36b3423db97cbd00484685639e24634db98bacb5c7b2cf4435c882cac713043e","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.unit","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Unit","text_hash":"4e545960f1bffc134026127ef92963e136ec84b24bb2a6103c0731a64843a40b","tgt_lang":"zh-TW","translated":"單位","updated_at":"2026-04-05T17:11:28.693Z"}
|
||||
{"cache_key":"36c28acb38b45304ac2c7d9471bdc1c235cff7ebdbac61f2c4926af5c696ff6f","model":"gpt-5.4","provider":"openai","segment_id":"common.probeFailed","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Probe failed","text_hash":"450e4a86d32cc99604a33165c0f71dbd9b3d353a82ef73b931667da22c925abc","tgt_lang":"zh-TW","translated":"探測失敗","updated_at":"2026-04-06T02:47:27.523Z"}
|
||||
@@ -197,6 +198,7 @@
|
||||
{"cache_key":"44453c89b5c01ce045b516beb88642cce731afc2dd7fb028cc83229c0c47f67d","model":"gpt-5.4","provider":"openai","segment_id":"usage.empty.featureSessions","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Session ranking","text_hash":"3d7a0d78109afcbc00cf1355110c46efeb59fda315ffd023cb0286791f48179e","tgt_lang":"zh-TW","translated":"工作階段排名","updated_at":"2026-04-05T17:10:38.462Z"}
|
||||
{"cache_key":"4521f331d333373f97e1deb2ff244dd5de26aeca5c03b66481543e400adab78f","model":"gpt-5.4","provider":"openai","segment_id":"channels.nostr.lightningHelp","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Lightning address for tips (LUD-16)","text_hash":"fee6e236efa382b3797e36ec38e023459d2e48c8e5e3bba466b08d438878b713","tgt_lang":"zh-TW","translated":"用於接收小費的 Lightning 地址(LUD-16)","updated_at":"2026-04-06T02:47:36.502Z"}
|
||||
{"cache_key":"45dd4b6fce4072780615065711c93862608e616e607af6f5ba8a32849d1f29b3","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.status.active","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Dreaming Active","text_hash":"fd7a73177f09d63e4afe11f3ac6e028368eb1c3163b80022a9bf46b94e1b658a","tgt_lang":"zh-TW","translated":"Dreaming 進行中","updated_at":"2026-04-06T02:47:44.708Z"}
|
||||
{"cache_key":"4724b2203d7b3b9d5dec7d6337423ba461eb14a79ebb67033816a7709fd4a5dd","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.title","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"{status}: {pending} pending, {stale} stale, {cached} cached","text_hash":"1624a9a31e539f4050c752e73ef7ee0c337acab321a6216f6a4216a54824025e","tgt_lang":"zh-TW","translated":"{status}: {pending} 個待處理,{stale} 個過期,{cached} 個已快取","updated_at":"2026-05-03T18:28:16.397Z"}
|
||||
{"cache_key":"47bdf1a10553e32ea7dd0872a9f32a9eb32c4707e8fdd456b665ba2a46e1481a","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.diary.waitingTitle","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"The diary is waiting","text_hash":"bce935f0c4eb2feb409016a0c4302e25aa76844d715b7f691bd40bff88d76039","tgt_lang":"zh-TW","translated":"日誌正在等待","updated_at":"2026-04-06T02:47:44.708Z"}
|
||||
{"cache_key":"486f3847e6aefd2bdfcad7b098e272519de95a4b18aa38ad26e06b98c3112318","model":"gpt-5.5","provider":"openai","segment_id":"languages.ar","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"العربية (Arabic)","text_hash":"10d878fbdf0087b986838cb75a671dc756251e353a6612c6d04082214a952639","tgt_lang":"zh-TW","translated":"العربية(阿拉伯文)","updated_at":"2026-04-29T17:35:07.605Z"}
|
||||
{"cache_key":"487dfa1ba3feb82d9aa78adceafccffe090a1636e6476c60d216a1efe5e12b4f","model":"gpt-5.4","provider":"openai","segment_id":"usage.filters.channel","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Channel","text_hash":"ce4683e7013a18cdf3d224bfcb4e9594ea8f559e946a837c633defe7d3c32172","tgt_lang":"zh-TW","translated":"頻道","updated_at":"2026-04-05T17:10:34.347Z"}
|
||||
@@ -285,6 +287,7 @@
|
||||
{"cache_key":"60fa94ccfd44d229f0eadaf992c392bf6bd528025c05b258c2ae9f3a79ce077a","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.modelPlaceholder","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"openai/gpt-5.2","text_hash":"6132e68d7f0a0599f9968517c48ad233160cb117b47061c666343a680e0f969d","tgt_lang":"zh-TW","translated":"openai/gpt-5.2","updated_at":"2026-04-06T02:59:17.485Z"}
|
||||
{"cache_key":"611ec6f9d39d8e3a6464691e4e04ac40a7ec61254e055b8218b2c54d492a1aa8","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.phase.light","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Light","text_hash":"dbcd5e7bb7a0f538810de44c3efbd813037ee3fa358747bb71fa58e157af45f7","tgt_lang":"zh-TW","translated":"淺層","updated_at":"2026-04-10T07:58:28.760Z"}
|
||||
{"cache_key":"6151e739b6eff985e5144681e8e7488c4b637fadd60c543f6037b278b2804caf","model":"gpt-5.4","provider":"openai","segment_id":"common.loading","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Loading…","text_hash":"ba3bbbe10d8bef66441c88536ce7b8e724e2829b59a3da658654f4961cd61ae5","tgt_lang":"zh-TW","translated":"載入中…","updated_at":"2026-04-06T02:47:24.362Z"}
|
||||
{"cache_key":"623dfba667f28c15fefcda139fc56efc84b0d6f391473f64aa23785edfb66bc8","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.warning","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Usage cache is rebuilding in the background. Displayed totals may be stale.","text_hash":"b6ac0edeeffcb9a8f9c4f2a2e1a586206e8f2850bb4a304455c6b8abf5efa95a","tgt_lang":"zh-TW","translated":"用量快取正在背景重新建置。顯示的總計可能不是最新的。","updated_at":"2026-05-03T18:28:16.397Z"}
|
||||
{"cache_key":"6261d4b5605c81f08b86a9dffe2845c299fe753f2e162c853a609ce03cb7a8a8","model":"gpt-5.4","provider":"openai","segment_id":"common.confirm","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Confirm","text_hash":"eebdd24a77d9ad32222660c07777163bf5f6732df2b172351f3f8d5783e4f529","tgt_lang":"zh-TW","translated":"確認","updated_at":"2026-04-06T02:47:24.363Z"}
|
||||
{"cache_key":"62cdfa96b7a6f3412cd05f029caa0290a60c4996ba5e48640a8bd00cc3e7293c","model":"gpt-5.4","provider":"openai","segment_id":"usage.loading.badge","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Loading","text_hash":"dc380888c4e2c7762212480ff86eb39150ec70b45009c33bc6adcbd0041384b1","tgt_lang":"zh-TW","translated":"載入中","updated_at":"2026-04-05T17:10:31.705Z"}
|
||||
{"cache_key":"6312f02f7a251d526b528a0602f25d9a199557b23f06ef3d8c0d6fba56ab3510","model":"gpt-5.4","provider":"openai","segment_id":"dreaming.phrases.alphabetizingSubconscious","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"alphabetizing the subconscious…","text_hash":"689b32ed4cd0e3bdcad19116d447ea1eb8fdede1ba47d39a21750b3fc3ecf71f","tgt_lang":"zh-TW","translated":"正在將潛意識按字母排序…","updated_at":"2026-04-06T02:47:50.031Z"}
|
||||
@@ -370,6 +373,7 @@
|
||||
{"cache_key":"7e2e83e1c988b841ea7a277f5682c5936c8706c31b4b043e65bad82990d0aeb7","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.systemEvent","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Post message to main timeline","text_hash":"114ef03ed867cd1fabd71e0475822261a5baf3e84210260e8bed84ac005f0a3a","tgt_lang":"zh-TW","translated":"將訊息發佈到主要時間軸","updated_at":"2026-04-05T17:11:33.239Z"}
|
||||
{"cache_key":"7ea7ff5ae8fa6baba9e6e4715212205b1001d29166107c804069cdcf2b58d69b","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.addJob","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Add job","text_hash":"30984d76f83a02109b01e7d7b2fabb4695ddadf3cdfc5c5b79a3d596b8fbb2ba","tgt_lang":"zh-TW","translated":"新增工作","updated_at":"2026-04-05T17:11:44.614Z"}
|
||||
{"cache_key":"7f027e0b16c857a6f447c5433ab0641f9783055bcd7ed108f02b779897a1239d","model":"gpt-5.5","provider":"openai","segment_id":"common.delete","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Delete","text_hash":"e2d0a54968ead24efc0dffa6ac78fc606dceec34a0f586177a74a54cc2272cf8","tgt_lang":"zh-TW","translated":"刪除","updated_at":"2026-04-29T20:12:19.300Z"}
|
||||
{"cache_key":"7f3eb976c06e840b6db5c2aedf7505de011c3b912fb8b6352cdb8f714f7cea44","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.stale","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"stale","text_hash":"a03f2386ae06b21109577020844df367857b72c2fcce384c1896fed98a89c82b","tgt_lang":"zh-TW","translated":"過期","updated_at":"2026-05-03T18:28:16.397Z"}
|
||||
{"cache_key":"7f6ea07036688b27e485b6de301b8ab3cd97ccbb96700e0a83ce9035587d1944","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.everyAmountPlaceholder","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"30","text_hash":"624b60c58c9d8bfb6ff1886c2fd605d2adeb6ea4da576068201b6c6958ce93f4","tgt_lang":"zh-TW","translated":"30","updated_at":"2026-04-06T02:59:17.485Z"}
|
||||
{"cache_key":"7f7e83ecf9008cbf9ccdd4f287b2e9fddc6a2f98d64b634b66531f66ff17eaba","model":"gpt-5.4","provider":"openai","segment_id":"common.probeOk","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Probe ok","text_hash":"c3d8dac3db6b4f2768483a199b2c0784645995f63459d91e8d0bddee2f6993c7","tgt_lang":"zh-TW","translated":"探測成功","updated_at":"2026-04-06T02:47:27.523Z"}
|
||||
{"cache_key":"7f8a8e7a5baa59c96a8ad1f3ba0c9b5f60f744f7763c7cc8fd52cc3af6663ebf","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.manual","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"manual","text_hash":"36bde66f289a35683683b041c6d8f418a5f36607b547da25d00ad55891e80b88","tgt_lang":"zh-TW","translated":"手動","updated_at":"2026-04-29T20:12:22.017Z"}
|
||||
@@ -618,6 +622,7 @@
|
||||
{"cache_key":"d71922cd6c35521070f5fe498b4a00452590d911df37b7a88f03e19b5b5c468b","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.searchRuns","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Search runs","text_hash":"26d6d37f90dc1f5d611c3fa58c1a75a29384dd2e1ffb4b5a1b6f42331b0f1b6d","tgt_lang":"zh-TW","translated":"搜尋執行記錄","updated_at":"2026-04-05T17:11:22.200Z"}
|
||||
{"cache_key":"d79e4f15cfd1a22fe99f0b140f560ab486e46a84c5955cbef706236b1cf8708e","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.minutesPlaceholder","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"min","text_hash":"1f6fa6f69d185e6086d04e7330361bf9001a3b8d0ce511171055dc34eb90c1c5","tgt_lang":"zh-TW","translated":"分鐘","updated_at":"2026-04-29T20:12:19.300Z"}
|
||||
{"cache_key":"d7d3ff92eebaa4b03de90e3fd9315c065e0cbf1925ffc7a148637440102cf804","model":"gpt-5.4","provider":"openai","segment_id":"cron.runs.allStatuses","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"All statuses","text_hash":"8ee57323a6f24cc7a5e2395cc0bec1eafc76799ef0e0f31c7a81ddb87faf7a2b","tgt_lang":"zh-TW","translated":"所有狀態","updated_at":"2026-04-05T17:11:25.473Z"}
|
||||
{"cache_key":"d817ecf3feb14ab7d1be3fa188cb8d5817c35749e5a67e3cc3d22b247a7c7112","model":"gpt-5.5","provider":"openai","segment_id":"usage.cacheStatus.status.refreshing","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"refreshing","text_hash":"0b61ac5d9426518ad7908a62037255c6881f9a5fa404ef3b99c24baa2111a174","tgt_lang":"zh-TW","translated":"重新整理中","updated_at":"2026-05-03T18:28:16.397Z"}
|
||||
{"cache_key":"d8e12d499846508906843e41c1086af77e4d3b56a9b944c703cdb3bacb25c613","model":"gpt-5.4","provider":"openai","segment_id":"cron.form.fixFields","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Fix {count} field to continue.","text_hash":"d23ecdcad6814e7d5b166d385f58c95735e3219acba8ec2b07c74345681e63d2","tgt_lang":"zh-TW","translated":"修正 {count} 個欄位以繼續。","updated_at":"2026-04-05T17:11:44.614Z"}
|
||||
{"cache_key":"d922f4f0cd722352fb4872423d08d68a61959c5811f40f59fd4323197769e598","model":"gpt-5.4","provider":"openai","segment_id":"usage.mosaic.thu","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Thu","text_hash":"7da11212ed340ea7976a39891c56c6f1e791a175a4bad537ba1cf21f5c83f6fd","tgt_lang":"zh-TW","translated":"週四","updated_at":"2026-04-05T17:11:05.499Z"}
|
||||
{"cache_key":"d9b7b1816f3ad1cdf791a6509e06a0a021f5bf0f378df74eefd718b004de9c50","model":"gpt-5.4","provider":"openai","segment_id":"usage.details.duration","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Duration","text_hash":"4fc52a3c4c558b517c463b22d86d0e3b9cfd4255c98fe3510f9075b37ab419c9","tgt_lang":"zh-TW","translated":"持續時間","updated_at":"2026-04-05T17:10:54.968Z"}
|
||||
|
||||
@@ -717,6 +717,16 @@ export const ar: TranslationMap = {
|
||||
dailyCsv: "CSV اليومي",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"تجري إعادة بناء ذاكرة الاستخدام المؤقتة في الخلفية. قد تكون الإجماليات المعروضة قديمة.",
|
||||
title: "{status}: {pending} معلّقة، {stale} قديمة، {cached} مخزّنة مؤقتًا",
|
||||
status: {
|
||||
refreshing: "جارٍ التحديث",
|
||||
stale: "قديم",
|
||||
partial: "جزئي",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "ابدأ بنطاق تاريخ",
|
||||
subtitle:
|
||||
|
||||
@@ -730,6 +730,16 @@ export const de: TranslationMap = {
|
||||
dailyCsv: "Tägliche CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Der Nutzungscache wird im Hintergrund neu aufgebaut. Angezeigte Summen können veraltet sein.",
|
||||
title: "{status}: {pending} ausstehend, {stale} veraltet, {cached} zwischengespeichert",
|
||||
status: {
|
||||
refreshing: "wird aktualisiert",
|
||||
stale: "veraltet",
|
||||
partial: "teilweise",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Mit einem Datumsbereich beginnen",
|
||||
subtitle:
|
||||
|
||||
@@ -719,6 +719,15 @@ export const en: TranslationMap = {
|
||||
dailyCsv: "Daily CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning: "Usage cache is rebuilding in the background. Displayed totals may be stale.",
|
||||
title: "{status}: {pending} pending, {stale} stale, {cached} cached",
|
||||
status: {
|
||||
refreshing: "refreshing",
|
||||
stale: "stale",
|
||||
partial: "partial",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Start with a date range",
|
||||
subtitle:
|
||||
|
||||
@@ -727,6 +727,16 @@ export const es: TranslationMap = {
|
||||
dailyCsv: "CSV diario",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"La caché de uso se está reconstruyendo en segundo plano. Los totales mostrados pueden estar desactualizados.",
|
||||
title: "{status}: {pending} pendientes, {stale} desactualizados, {cached} en caché",
|
||||
status: {
|
||||
refreshing: "actualizando",
|
||||
stale: "desactualizada",
|
||||
partial: "parcial",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Comienza con un rango de fechas",
|
||||
subtitle:
|
||||
|
||||
@@ -725,6 +725,16 @@ export const fa: TranslationMap = {
|
||||
dailyCsv: "CSV روزانه",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"کشِ استفاده در پسزمینه در حال بازسازی است. مجموعهای نمایشدادهشده ممکن است قدیمی باشند.",
|
||||
title: "{status}: {pending} در انتظار، {stale} قدیمی، {cached} کششده",
|
||||
status: {
|
||||
refreshing: "در حال تازهسازی",
|
||||
stale: "قدیمی",
|
||||
partial: "جزئی",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "با یک بازه تاریخ شروع کنید",
|
||||
subtitle:
|
||||
|
||||
@@ -729,6 +729,16 @@ export const fr: TranslationMap = {
|
||||
dailyCsv: "CSV quotidien",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Le cache d’utilisation est en cours de reconstruction en arrière-plan. Les totaux affichés peuvent être obsolètes.",
|
||||
title: "{status} : {pending} en attente, {stale} obsolètes, {cached} en cache",
|
||||
status: {
|
||||
refreshing: "actualisation",
|
||||
stale: "obsolète",
|
||||
partial: "partiel",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Commencez par une plage de dates",
|
||||
subtitle:
|
||||
|
||||
@@ -723,6 +723,16 @@ export const id: TranslationMap = {
|
||||
dailyCsv: "CSV Harian",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Cache penggunaan sedang dibangun ulang di latar belakang. Total yang ditampilkan mungkin sudah kedaluwarsa.",
|
||||
title: "{status}: {pending} tertunda, {stale} kedaluwarsa, {cached} tersimpan dalam cache",
|
||||
status: {
|
||||
refreshing: "menyegarkan",
|
||||
stale: "kedaluwarsa",
|
||||
partial: "sebagian",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Mulai dengan rentang tanggal",
|
||||
subtitle:
|
||||
|
||||
@@ -727,6 +727,16 @@ export const it: TranslationMap = {
|
||||
dailyCsv: "CSV giornaliero",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"La cache di utilizzo viene ricostruita in background. I totali visualizzati potrebbero non essere aggiornati.",
|
||||
title: "{status}: {pending} in sospeso, {stale} obsoleti, {cached} memorizzati nella cache",
|
||||
status: {
|
||||
refreshing: "aggiornamento in corso",
|
||||
stale: "obsoleta",
|
||||
partial: "parziale",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Inizia con un intervallo di date",
|
||||
subtitle:
|
||||
|
||||
@@ -726,6 +726,16 @@ export const ja_JP: TranslationMap = {
|
||||
dailyCsv: "日次 CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"使用状況キャッシュをバックグラウンドで再構築しています。表示される合計は古い可能性があります。",
|
||||
title: "{status}: 保留中 {pending}、古い {stale}、キャッシュ済み {cached}",
|
||||
status: {
|
||||
refreshing: "更新中",
|
||||
stale: "古い",
|
||||
partial: "一部",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "まずは日付範囲を選択",
|
||||
subtitle:
|
||||
|
||||
@@ -722,6 +722,16 @@ export const ko: TranslationMap = {
|
||||
dailyCsv: "일별 CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"사용량 캐시가 백그라운드에서 다시 빌드되고 있습니다. 표시된 합계가 최신이 아닐 수 있습니다.",
|
||||
title: "{status}: 대기 중 {pending}, 오래됨 {stale}, 캐시됨 {cached}",
|
||||
status: {
|
||||
refreshing: "새로 고치는 중",
|
||||
stale: "오래됨",
|
||||
partial: "부분적",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "날짜 범위부터 시작하세요",
|
||||
subtitle:
|
||||
|
||||
@@ -727,6 +727,16 @@ export const nl: TranslationMap = {
|
||||
dailyCsv: "Dagelijkse CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Gebruikscache wordt op de achtergrond opnieuw opgebouwd. Weergegeven totalen kunnen verouderd zijn.",
|
||||
title: "{status}: {pending} in behandeling, {stale} verouderd, {cached} gecachet",
|
||||
status: {
|
||||
refreshing: "verversen",
|
||||
stale: "verouderd",
|
||||
partial: "gedeeltelijk",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Begin met een datumbereik",
|
||||
subtitle:
|
||||
|
||||
@@ -727,6 +727,17 @@ export const pl: TranslationMap = {
|
||||
dailyCsv: "CSV dzienne",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Pamięć podręczna użycia jest odbudowywana w tle. Wyświetlane sumy mogą być nieaktualne.",
|
||||
title:
|
||||
"{status}: oczekujące: {pending}, nieaktualne: {stale}, z pamięci podręcznej: {cached}",
|
||||
status: {
|
||||
refreshing: "odświeżanie",
|
||||
stale: "nieaktualne",
|
||||
partial: "częściowe",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Zacznij od zakresu dat",
|
||||
subtitle:
|
||||
|
||||
@@ -724,6 +724,16 @@ export const pt_BR: TranslationMap = {
|
||||
dailyCsv: "CSV diário",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"O cache de uso está sendo reconstruído em segundo plano. Os totais exibidos podem estar desatualizados.",
|
||||
title: "{status}: {pending} pendentes, {stale} desatualizados, {cached} em cache",
|
||||
status: {
|
||||
refreshing: "atualizando",
|
||||
stale: "desatualizado",
|
||||
partial: "parcial",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Comece com um intervalo de datas",
|
||||
subtitle:
|
||||
|
||||
@@ -713,6 +713,15 @@ export const th: TranslationMap = {
|
||||
dailyCsv: "CSV รายวัน",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning: "แคชการใช้งานกำลังสร้างใหม่ในเบื้องหลัง ยอดรวมที่แสดงอาจไม่เป็นปัจจุบัน",
|
||||
title: "{status}: ค้างอยู่ {pending}, ล้าสมัย {stale}, แคชแล้ว {cached}",
|
||||
status: {
|
||||
refreshing: "กำลังรีเฟรช",
|
||||
stale: "ล้าสมัย",
|
||||
partial: "บางส่วน",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "เริ่มต้นด้วยช่วงวันที่",
|
||||
subtitle:
|
||||
|
||||
@@ -729,6 +729,16 @@ export const tr: TranslationMap = {
|
||||
dailyCsv: "Günlük CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Kullanım önbelleği arka planda yeniden oluşturuluyor. Görüntülenen toplamlar güncel olmayabilir.",
|
||||
title: "{status}: {pending} beklemede, {stale} güncel değil, {cached} önbellekte",
|
||||
status: {
|
||||
refreshing: "yenileniyor",
|
||||
stale: "güncel değil",
|
||||
partial: "kısmi",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Bir tarih aralığıyla başlayın",
|
||||
subtitle:
|
||||
|
||||
@@ -729,6 +729,16 @@ export const uk: TranslationMap = {
|
||||
dailyCsv: "Щоденний CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Кеш використання перебудовується у фоновому режимі. Відображені підсумки можуть бути застарілими.",
|
||||
title: "{status}: {pending} очікує, {stale} застаріло, {cached} кешовано",
|
||||
status: {
|
||||
refreshing: "оновлення",
|
||||
stale: "застаріло",
|
||||
partial: "частково",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Почніть із діапазону дат",
|
||||
subtitle:
|
||||
|
||||
@@ -721,6 +721,16 @@ export const vi: TranslationMap = {
|
||||
dailyCsv: "CSV hằng ngày",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning:
|
||||
"Bộ nhớ đệm mức sử dụng đang được xây dựng lại trong nền. Tổng số hiển thị có thể đã lỗi thời.",
|
||||
title: "{status}: {pending} đang chờ, {stale} lỗi thời, {cached} đã lưu vào bộ nhớ đệm",
|
||||
status: {
|
||||
refreshing: "đang làm mới",
|
||||
stale: "lỗi thời",
|
||||
partial: "một phần",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "Bắt đầu bằng một khoảng ngày",
|
||||
subtitle:
|
||||
|
||||
@@ -713,6 +713,15 @@ export const zh_CN: TranslationMap = {
|
||||
dailyCsv: "每日 CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning: "用量缓存正在后台重建。显示的总计可能不是最新的。",
|
||||
title: "{status}: {pending} 个待处理,{stale} 个过期,{cached} 个已缓存",
|
||||
status: {
|
||||
refreshing: "正在刷新",
|
||||
stale: "过期",
|
||||
partial: "部分",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "从日期范围开始",
|
||||
subtitle: "加载使用数据以比较成本、检查会话,并深入查看时间线,无需离开仪表板。",
|
||||
|
||||
@@ -714,6 +714,15 @@ export const zh_TW: TranslationMap = {
|
||||
dailyCsv: "每日 CSV",
|
||||
json: "JSON",
|
||||
},
|
||||
cacheStatus: {
|
||||
warning: "用量快取正在背景重新建置。顯示的總計可能不是最新的。",
|
||||
title: "{status}: {pending} 個待處理,{stale} 個過期,{cached} 個已快取",
|
||||
status: {
|
||||
refreshing: "重新整理中",
|
||||
stale: "過期",
|
||||
partial: "部分",
|
||||
},
|
||||
},
|
||||
empty: {
|
||||
title: "從日期範圍開始",
|
||||
subtitle: "載入使用資料以比較成本、檢視工作階段,並深入查看時間軸,無需離開儀表板。",
|
||||
|
||||
@@ -564,6 +564,14 @@ details.usage-filter-select summary::-webkit-details-marker,
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.callout.warning.usage-cache-warning {
|
||||
border-color: color-mix(in srgb, var(--accent) 32%, var(--border));
|
||||
background: var(--warn-subtle);
|
||||
color: var(--accent);
|
||||
font-weight: 600;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.usage-empty-state {
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
|
||||
@@ -4,6 +4,33 @@ import type { UsageState } from "./controllers/usage.ts";
|
||||
import { loadUsage, loadSessionTimeSeries, loadSessionLogs } from "./controllers/usage.ts";
|
||||
import { renderUsage } from "./views/usage.ts";
|
||||
|
||||
type UsageCacheStatus = NonNullable<NonNullable<UsageState["usageResult"]>["cacheStatus"]>;
|
||||
|
||||
function mergeUsageCacheStatus(
|
||||
sessionsStatus?: UsageCacheStatus,
|
||||
costStatus?: UsageCacheStatus,
|
||||
): UsageCacheStatus | undefined {
|
||||
if (!sessionsStatus) {
|
||||
return costStatus;
|
||||
}
|
||||
if (!costStatus) {
|
||||
return sessionsStatus;
|
||||
}
|
||||
const rank = { fresh: 0, partial: 1, stale: 2, refreshing: 3 } as const;
|
||||
const status =
|
||||
rank[costStatus.status] > rank[sessionsStatus.status]
|
||||
? costStatus.status
|
||||
: sessionsStatus.status;
|
||||
return {
|
||||
status,
|
||||
cachedFiles: Math.max(sessionsStatus.cachedFiles, costStatus.cachedFiles),
|
||||
pendingFiles: Math.max(sessionsStatus.pendingFiles, costStatus.pendingFiles),
|
||||
staleFiles: Math.max(sessionsStatus.staleFiles, costStatus.staleFiles),
|
||||
refreshedAt:
|
||||
Math.max(sessionsStatus.refreshedAt ?? 0, costStatus.refreshedAt ?? 0) || undefined,
|
||||
};
|
||||
}
|
||||
|
||||
// Module-scope debounce for usage date changes (avoids type-unsafe hacks on state object)
|
||||
let usageDateDebounceTimeout: number | null = null;
|
||||
const debouncedLoadUsage = (state: UsageState) => {
|
||||
@@ -27,6 +54,10 @@ export function renderUsageTab(state: AppViewState) {
|
||||
totals: state.usageResult?.totals ?? null,
|
||||
aggregates: state.usageResult?.aggregates ?? null,
|
||||
costDaily: state.usageCostSummary?.daily ?? [],
|
||||
cacheStatus: mergeUsageCacheStatus(
|
||||
state.usageResult?.cacheStatus,
|
||||
state.usageCostSummary?.cacheStatus,
|
||||
),
|
||||
},
|
||||
filters: {
|
||||
startDate: state.usageStartDate,
|
||||
|
||||
32
ui/src/ui/usage-cache-status.test.ts
Normal file
32
ui/src/ui/usage-cache-status.test.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
// @vitest-environment node
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { getUsageCacheRefreshTitle } from "./usage-cache-status.ts";
|
||||
|
||||
describe("getUsageCacheRefreshTitle", () => {
|
||||
it("formats non-fresh cache states for the Usage loading badge", () => {
|
||||
expect(
|
||||
getUsageCacheRefreshTitle({
|
||||
status: "refreshing",
|
||||
cachedFiles: 4,
|
||||
pendingFiles: 2,
|
||||
staleFiles: 2,
|
||||
}),
|
||||
).toBe("refreshing: 2 pending, 2 stale, 4 cached");
|
||||
expect(
|
||||
getUsageCacheRefreshTitle({
|
||||
status: "partial",
|
||||
cachedFiles: 4,
|
||||
pendingFiles: 1,
|
||||
staleFiles: 1,
|
||||
}),
|
||||
).toBe("partial: 1 pending, 1 stale, 4 cached");
|
||||
expect(
|
||||
getUsageCacheRefreshTitle({
|
||||
status: "fresh",
|
||||
cachedFiles: 4,
|
||||
pendingFiles: 0,
|
||||
staleFiles: 0,
|
||||
}),
|
||||
).toBeNull();
|
||||
});
|
||||
});
|
||||
21
ui/src/ui/usage-cache-status.ts
Normal file
21
ui/src/ui/usage-cache-status.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { t } from "../i18n/index.ts";
|
||||
import type { SessionsUsageResult } from "./usage-types.ts";
|
||||
|
||||
export type UsageCacheStatus = SessionsUsageResult["cacheStatus"];
|
||||
|
||||
export function getUsageCacheRefreshTitle(cacheStatus: UsageCacheStatus): string | null {
|
||||
if (
|
||||
!cacheStatus ||
|
||||
(cacheStatus.status !== "refreshing" &&
|
||||
cacheStatus.status !== "stale" &&
|
||||
cacheStatus.status !== "partial")
|
||||
) {
|
||||
return null;
|
||||
}
|
||||
return t("usage.cacheStatus.title", {
|
||||
status: t(`usage.cacheStatus.status.${cacheStatus.status}`),
|
||||
pending: String(cacheStatus.pendingFiles),
|
||||
stale: String(cacheStatus.staleFiles),
|
||||
cached: String(cacheStatus.cachedFiles),
|
||||
});
|
||||
}
|
||||
@@ -15,6 +15,7 @@ export type CostUsageSummary = {
|
||||
days: number;
|
||||
daily: CostUsageDailyEntry[];
|
||||
totals: SessionsUsageTotals;
|
||||
cacheStatus?: SharedSessionsUsageResult["cacheStatus"];
|
||||
};
|
||||
|
||||
export type SessionUsageTimePoint = SharedSessionUsageTimePoint;
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
import { render } from "lit";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { renderUsageInsights } from "./usage-render-overview.ts";
|
||||
import type { UsageAggregates, UsageTotals } from "./usageTypes.ts";
|
||||
import { renderSessionsCard, renderUsageInsights } from "./usage-render-overview.ts";
|
||||
import type { UsageAggregates, UsageSessionEntry, UsageTotals } from "./usageTypes.ts";
|
||||
|
||||
const totals: UsageTotals = {
|
||||
input: 100,
|
||||
@@ -67,3 +67,61 @@ describe("renderUsageInsights", () => {
|
||||
expect(container.textContent).toContain("1.0K prompt");
|
||||
});
|
||||
});
|
||||
|
||||
describe("renderSessionsCard", () => {
|
||||
const noop = () => {};
|
||||
|
||||
it("sorts cost by the selected day values when day filters are active", () => {
|
||||
const container = document.createElement("div");
|
||||
const sessions: UsageSessionEntry[] = [
|
||||
{
|
||||
key: "all-time-winner",
|
||||
label: "All time winner",
|
||||
updatedAt: 2,
|
||||
usage: {
|
||||
...totals,
|
||||
totalCost: 100,
|
||||
totalTokens: 100,
|
||||
dailyBreakdown: [{ date: "2026-02-05", cost: 1, tokens: 1 }],
|
||||
},
|
||||
} as UsageSessionEntry,
|
||||
{
|
||||
key: "day-winner",
|
||||
label: "Day winner",
|
||||
updatedAt: 1,
|
||||
usage: {
|
||||
...totals,
|
||||
totalCost: 50,
|
||||
totalTokens: 50,
|
||||
dailyBreakdown: [{ date: "2026-02-05", cost: 10, tokens: 10 }],
|
||||
},
|
||||
} as UsageSessionEntry,
|
||||
];
|
||||
|
||||
render(
|
||||
renderSessionsCard(
|
||||
sessions,
|
||||
[],
|
||||
["2026-02-05"],
|
||||
false,
|
||||
"cost",
|
||||
"desc",
|
||||
[],
|
||||
"all",
|
||||
noop,
|
||||
noop,
|
||||
noop,
|
||||
noop,
|
||||
[],
|
||||
sessions.length,
|
||||
noop,
|
||||
),
|
||||
container,
|
||||
);
|
||||
|
||||
const titles = Array.from(container.querySelectorAll(".session-bar-title")).map((el) =>
|
||||
el.textContent?.trim(),
|
||||
);
|
||||
expect(titles.slice(0, 2)).toEqual(["Day winner", "All time winner"]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -748,39 +748,57 @@ function renderSessionsCard(
|
||||
return parts;
|
||||
};
|
||||
|
||||
// Helper to get session value (filtered by days if selected)
|
||||
const getSessionValue = (s: UsageSessionEntry): number => {
|
||||
const selectedDaySet = new Set(selectedDays);
|
||||
|
||||
const getSessionMetricValue = (s: UsageSessionEntry, metric: "tokens" | "cost"): number => {
|
||||
const usage = s.usage;
|
||||
if (!usage) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// If days are selected and session has daily breakdown, compute filtered total
|
||||
if (selectedDays.length > 0 && usage.dailyBreakdown && usage.dailyBreakdown.length > 0) {
|
||||
const filteredDays = usage.dailyBreakdown.filter((d) => selectedDays.includes(d.date));
|
||||
return isTokenMode
|
||||
? filteredDays.reduce((sum, d) => sum + d.tokens, 0)
|
||||
: filteredDays.reduce((sum, d) => sum + d.cost, 0);
|
||||
if (selectedDaySet.size > 0 && usage.dailyBreakdown && usage.dailyBreakdown.length > 0) {
|
||||
return usage.dailyBreakdown.reduce((sum, day) => {
|
||||
if (!selectedDaySet.has(day.date)) {
|
||||
return sum;
|
||||
}
|
||||
return sum + (metric === "tokens" ? day.tokens : day.cost);
|
||||
}, 0);
|
||||
}
|
||||
|
||||
// Otherwise use total
|
||||
return isTokenMode ? (usage.totalTokens ?? 0) : (usage.totalCost ?? 0);
|
||||
return metric === "tokens" ? (usage.totalTokens ?? 0) : (usage.totalCost ?? 0);
|
||||
};
|
||||
|
||||
const getSessionValue = (s: UsageSessionEntry): number => {
|
||||
return getSessionMetricValue(s, isTokenMode ? "tokens" : "cost");
|
||||
};
|
||||
|
||||
const getSessionSortValue = (s: UsageSessionEntry): number => {
|
||||
switch (sessionSort) {
|
||||
case "recent":
|
||||
return s.updatedAt ?? 0;
|
||||
case "messages":
|
||||
return s.usage?.messageCounts?.total ?? 0;
|
||||
case "errors":
|
||||
return s.usage?.messageCounts?.errors ?? 0;
|
||||
case "cost":
|
||||
return getSessionMetricValue(s, "cost");
|
||||
case "tokens":
|
||||
return getSessionMetricValue(s, "tokens");
|
||||
}
|
||||
const exhaustiveSort: never = sessionSort;
|
||||
return exhaustiveSort;
|
||||
};
|
||||
|
||||
const sortedSessions = [...sessions].toSorted((a, b) => {
|
||||
switch (sessionSort) {
|
||||
case "recent":
|
||||
return (b.updatedAt ?? 0) - (a.updatedAt ?? 0);
|
||||
case "messages":
|
||||
return (b.usage?.messageCounts?.total ?? 0) - (a.usage?.messageCounts?.total ?? 0);
|
||||
case "errors":
|
||||
return (b.usage?.messageCounts?.errors ?? 0) - (a.usage?.messageCounts?.errors ?? 0);
|
||||
case "cost":
|
||||
return getSessionValue(b) - getSessionValue(a);
|
||||
case "tokens":
|
||||
default:
|
||||
return getSessionValue(b) - getSessionValue(a);
|
||||
const valueDiff = getSessionSortValue(b) - getSessionSortValue(a);
|
||||
if (valueDiff !== 0) {
|
||||
return valueDiff;
|
||||
}
|
||||
const recentDiff = (b.updatedAt ?? 0) - (a.updatedAt ?? 0);
|
||||
if (recentDiff !== 0) {
|
||||
return recentDiff;
|
||||
}
|
||||
return formatSessionListLabel(a).localeCompare(formatSessionListLabel(b));
|
||||
});
|
||||
const sortedWithDir = sessionSortDir === "asc" ? sortedSessions.toReversed() : sortedSessions;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { html, nothing } from "lit";
|
||||
import { t } from "../../i18n/index.ts";
|
||||
import { getUsageCacheRefreshTitle } from "../usage-cache-status.ts";
|
||||
import { extractQueryTerms, filterSessionsByQuery } from "../usage-helpers.ts";
|
||||
import {
|
||||
buildAggregatesFromSessions,
|
||||
@@ -299,6 +300,7 @@ export function renderUsage(props: UsageProps) {
|
||||
|
||||
const insightStats = buildUsageInsightStats(aggregateSessions, displayTotals, activeAggregates);
|
||||
const isEmpty = !data.loading && !data.totals && data.sessions.length === 0;
|
||||
const cacheStatusTitle = getUsageCacheRefreshTitle(data.cacheStatus);
|
||||
const hasMissingCost =
|
||||
(displayTotals?.missingCostEntries ?? 0) > 0 ||
|
||||
(displayTotals
|
||||
@@ -422,8 +424,10 @@ export function renderUsage(props: UsageProps) {
|
||||
<div class="usage-header-row">
|
||||
<div class="usage-header-title">
|
||||
<div class="card-title usage-section-title">${t("usage.filters.title")}</div>
|
||||
${data.loading
|
||||
? html`<span class="usage-refresh-indicator">${t("usage.loading.badge")}</span>`
|
||||
${data.loading || cacheStatusTitle
|
||||
? html`<span class="usage-refresh-indicator" title=${cacheStatusTitle ?? ""}>
|
||||
${t("usage.loading.badge")}
|
||||
</span>`
|
||||
: nothing}
|
||||
${isEmpty
|
||||
? html`<span class="usage-query-hint">${t("usage.empty.hint")}</span>`
|
||||
@@ -708,6 +712,13 @@ export function renderUsage(props: UsageProps) {
|
||||
${data.error
|
||||
? html`<div class="callout danger usage-callout">${data.error}</div>`
|
||||
: nothing}
|
||||
${cacheStatusTitle
|
||||
? html`
|
||||
<div class="callout warning usage-callout usage-cache-warning">
|
||||
${t("usage.cacheStatus.warning")} ${cacheStatusTitle}
|
||||
</div>
|
||||
`
|
||||
: nothing}
|
||||
${data.sessionsLimitReached
|
||||
? html`
|
||||
<div class="callout warning usage-callout">${t("usage.sessions.limitReached")}</div>
|
||||
|
||||
@@ -31,6 +31,7 @@ export type UsageDataState = {
|
||||
totals: UsageTotals | null;
|
||||
aggregates: UsageAggregates | null;
|
||||
costDaily: CostDailyEntry[];
|
||||
cacheStatus: SessionsUsageResult["cacheStatus"];
|
||||
};
|
||||
|
||||
export type UsageFilterState = {
|
||||
|
||||
Reference in New Issue
Block a user