import type { TranslationMap } from "../lib/types.ts";
export const en: TranslationMap = {
common: {
health: "Health",
ok: "OK",
yes: "Yes",
no: "No",
active: "Active",
loading: "Loading…",
refreshing: "Refreshing…",
online: "Online",
offline: "Offline",
connect: "Connect",
connected: "Connected",
refresh: "Refresh",
reload: "Reload",
probe: "Probe",
call: "Call",
confirm: "Confirm",
cancel: "Cancel",
unselect: "Unselect",
enabled: "Enabled",
disabled: "Disabled",
na: "n/a",
configured: "Configured",
running: "Running",
linked: "Linked",
mode: "Mode",
baseUrl: "Base URL",
lastStart: "Last start",
lastProbe: "Last probe",
lastInbound: "Last inbound",
lastConnect: "Last connect",
lastMessage: "Last message",
authAge: "Auth age",
credential: "Credential",
audience: "Audience",
publicKey: "Public Key",
probeOk: "Probe ok",
probeFailed: "Probe failed",
reloadConfig: "Reload Config",
loadConfig: "Load config",
loadApprovals: "Load approvals",
settingsSections: "Settings sections",
version: "Version",
docs: "Docs",
theme: "Theme",
resources: "Resources",
search: "Search",
save: "Save",
saving: "Saving…",
saveAndPublish: "Save & Publish",
importing: "Importing…",
importFromRelays: "Import from Relays",
showAdvanced: "Show Advanced",
hideAdvanced: "Hide Advanced",
unsavedChanges: "You have unsaved changes",
secondsAgo: "{count}s ago",
working: "Working…",
showQr: "Show QR",
relink: "Relink",
waitForScan: "Wait for scan",
logout: "Logout",
},
channels: {
health: {
title: "Channel health",
subtitle: "Channel status snapshots from the gateway.",
noSnapshotYet: "No snapshot yet.",
},
generic: {
subtitle: "Channel status and configuration.",
},
gatewayUrlConfirmation: {
title: "Change Gateway URL",
subtitle: "This will reconnect to a different gateway server",
warning: "Only confirm if you trust this URL. Malicious URLs can compromise your system.",
},
nostr: {
profile: "Profile",
editProfile: "Edit Profile",
profilePicture: "Profile picture",
noProfile: "No profile set.",
noProfileHint: 'Click "Edit Profile" to add your name, bio, and avatar.',
name: "Name",
displayName: "Display Name",
about: "About",
advanced: "Advanced",
profilePicturePreview: "Profile picture preview",
account: "Account",
username: "Username",
usernameHelp: "Short username (e.g., satoshi)",
bio: "Bio",
bioPlaceholder: "Tell people about yourself...",
bioHelp: "A brief bio or description",
displayNameHelp: "Your full display name",
avatarUrl: "Avatar URL",
avatarHelp: "HTTPS URL to your profile picture",
bannerUrl: "Banner URL",
bannerHelp: "HTTPS URL to a banner image",
website: "Website",
websiteHelp: "Your personal website",
nip05Identifier: "NIP-05 Identifier",
nip05Help: "Verifiable identifier (e.g., you@domain.com)",
lightningAddress: "Lightning Address",
lightningHelp: "Lightning address for tips (LUD-16)",
},
},
nodes: {
binding: {
loadConfigHint: "Load config to edit bindings.",
formModeHint: "Switch the Config tab to Form mode to edit bindings here.",
execNodeBinding: "Exec node binding",
execNodeBindingSubtitle: "Pin agents to a specific node when using exec host=node.",
defaultBinding: "Default binding",
defaultBindingHint: "Used when agents do not override a node binding.",
node: "Node",
},
},
instances: {
title: "Connected Instances",
subtitle: "Presence beacons from the gateway and clients.",
showHosts: "Show hosts and IPs",
hideHosts: "Hide hosts and IPs",
toggleHostVisibility: "Toggle host visibility",
noInstances: "No instances reported yet.",
lastInput: "Last input {time}",
reason: "Reason {reason}",
},
agentTools: {
connectedSource: "Connected: {id}",
connected: "Connected",
channelSource: "Channel: {id}",
channel: "Channel",
builtIn: "Built-in",
},
nav: {
chat: "Chat",
control: "Control",
agent: "Agent",
settings: "Settings",
expand: "Expand sidebar",
collapse: "Collapse sidebar",
resize: "Resize sidebar",
},
tabs: {
agents: "Agents",
overview: "Overview",
channels: "Channels",
instances: "Instances",
sessions: "Sessions",
usage: "Usage",
cron: "Cron Jobs",
skills: "Skills",
nodes: "Nodes",
chat: "Chat",
config: "Config",
communications: "Communications",
appearance: "Appearance",
automation: "Automation",
infrastructure: "Infrastructure",
aiAgents: "AI & Agents",
debug: "Debug",
logs: "Logs",
dreams: "Dreaming",
},
subtitles: {
agents: "Workspaces, tools, identities.",
overview: "Status, entry points, health.",
channels: "Channels and settings.",
instances: "Connected clients and nodes.",
sessions: "Active sessions and defaults.",
usage: "API usage and costs.",
cron: "Wakeups and recurring runs.",
skills: "Skills and API keys.",
nodes: "Paired devices and commands.",
chat: "Gateway chat for quick interventions.",
config: "Edit openclaw.json.",
communications: "Channels, messages, and audio settings.",
appearance: "Theme, UI, and setup wizard settings.",
automation: "Commands, hooks, cron, and plugins.",
infrastructure: "Gateway, web, browser, and media settings.",
aiAgents: "Agents, models, skills, tools, memory, session.",
debug: "Snapshots, events, RPC.",
logs: "Live gateway logs.",
dreams: "Memory dreaming, consolidation, and reflection.",
},
overview: {
access: {
title: "Gateway Access",
subtitle: "Where the dashboard connects and how it authenticates.",
wsUrl: "WebSocket URL",
token: "Gateway Token",
password: "Password (not stored)",
passwordPlaceholder: "system or shared password",
sessionKey: "Default Session Key",
language: "Language",
connectHint: "Click Connect to apply connection changes.",
trustedProxy: "Authenticated via trusted proxy.",
showToken: "Show token",
hideToken: "Hide token",
toggleTokenVisibility: "Toggle token visibility",
showPassword: "Show password",
hidePassword: "Hide password",
togglePasswordVisibility: "Toggle password visibility",
},
snapshot: {
title: "Snapshot",
subtitle: "Latest gateway handshake information.",
status: "Status",
uptime: "Uptime",
tickInterval: "Tick Interval",
lastChannelsRefresh: "Last Channels Refresh",
channelsHint: "Use Channels to link WhatsApp, Telegram, Discord, Signal, or iMessage.",
},
stats: {
instances: "Instances",
instancesHint: "Presence beacons in the last 5 minutes.",
sessions: "Sessions",
sessionsHint: "Recent session keys tracked by the gateway.",
cron: "Cron",
cronNext: "Next wake {time}",
},
notes: {
title: "Notes",
subtitle: "Quick reminders for remote control setups.",
tailscaleTitle: "Tailscale serve",
tailscaleText: "Prefer serve mode to keep the gateway on loopback with tailnet auth.",
sessionTitle: "Session hygiene",
sessionText: "Use /new or sessions.patch to reset context.",
cronTitle: "Cron reminders",
cronText: "Use isolated sessions for recurring runs.",
},
auth: {
required: "This gateway requires auth. Add a token or password, then click Connect.",
failed: "Auth failed. Re-copy a tokenized URL with {command}, or update the token, then click Connect.",
},
pairing: {
hint: "This device needs pairing approval from the gateway host.",
scopeUpgradeTitle: "Scope upgrade pending approval.",
scopeUpgradeSummary: "This device is already paired, but the requested wider scope is waiting for approval.",
roleUpgradeTitle: "Role upgrade pending approval.",
roleUpgradeSummary: "This device is already paired, but the requested role change is waiting for approval.",
metadataUpgradeTitle: "Device metadata change pending approval.",
metadataUpgradeSummary: "This device is already paired, but the metadata change is waiting for approval.",
mobileHint: "On mobile? Copy the full URL (including #token=...) from openclaw dashboard --no-open on your desktop.",
docsTitle: "Device pairing docs (opens in new tab)",
docsLink: "Docs: Device pairing",
},
insecure: {
hint: "This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open {url} on the gateway host.",
stayHttp: "If you must stay on HTTP, set {config} (token-only).",
},
connection: {
title: "How to connect",
step1: "Start the gateway on your host machine:",
step2: "Get a tokenized dashboard URL:",
step3: "Paste the WebSocket URL and token above, or open the tokenized URL directly.",
step4: "Or generate a reusable token:",
docsHint: "For remote access, Tailscale Serve is recommended. ",
docsLink: "Read the docs →",
authDocsTitle: "Control UI auth docs (opens in new tab)",
authDocsLink: "Docs: Control UI auth",
tailscaleDocsTitle: "Tailscale Serve docs (opens in new tab)",
tailscaleDocsLink: "Docs: Tailscale Serve",
insecureHttpDocsTitle: "Insecure HTTP docs (opens in new tab)",
insecureHttpDocsLink: "Docs: Insecure HTTP",
},
cards: {
cost: "Cost",
skills: "Skills",
recentSessions: "Recent Sessions",
modelAuth: "Model Auth",
modelAuthOk: "{count} ok",
modelAuthExpired: "{count} expired",
modelAuthExpiring: "{count} expiring",
modelAuthProviders: "{count} providers",
modelAuthUsageLeft: "{pct}% left",
modelAuthExpiresIn: "expires {when}",
modelAuthAttentionExpiredTitle: "Model auth expired",
modelAuthAttentionExpiringTitle: "Model auth expiring soon",
modelAuthAttentionExpiredDesc: "{providers} — re-authenticate with openclaw models auth",
modelAuthAttentionExpiringEntry: "{provider} ({when})",
},
attention: {
title: "Attention",
},
eventLog: {
title: "Event Log",
},
logTail: {
title: "Gateway Logs",
},
quickActions: {
newSession: "New Session",
automation: "Automation",
refreshAll: "Refresh All",
terminal: "Terminal",
},
palette: {
placeholder: "Type a command…",
noResults: "No results",
},
},
dreaming: {
tabs: {
scene: "Scene",
diary: "Diary",
advanced: "Advanced",
},
header: {
refresh: "Refresh",
refreshing: "Refreshing…",
on: "Dreaming On",
off: "Dreaming Off",
},
status: {
active: "Dreaming Active",
idle: "Dreaming Idle",
promotedSuffix: "promoted",
nextSweepPrefix: "next sweep",
},
scene: {
backfill: "Backfill",
dedupeDiary: "Dedupe Diary",
reset: "Reset",
clearGrounded: "Clear Replayed",
repairCache: "Repair Dream Cache",
working: "Working…",
},
phase: {
light: "Light",
deep: "Deep",
rem: "Rem",
off: "off",
},
advanced: {
eyebrow: "Review",
title: "Daily Log Review",
description: "Review what came from the daily log, what is waiting for promotion, and what was promoted recently.",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "From the Daily Log",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Waiting for Promotion",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},
stats: {
shortTerm: "Short-term",
grounded: "Grounded",
signals: "Signals",
promoted: "Promoted",
phaseHits: "Phase Hits",
},
trace: {
shortTerm: "Short-term",
grounded: "Grounded",
signals: "Signals",
promoted: "Promoted",
groundedLed: "grounded-led",
emptyShortTerm: "No active short-term items.",
emptyGrounded: "No staged grounded items.",
emptySignals: "No active signals.",
emptyPromoted: "Nothing promoted yet today.",
},
diary: {
title: "Dream Diary",
noDreamsYet: "No dreams yet",
noDreamsHint: "Dreams will appear here after the first dreaming cycle runs.",
waitingTitle: "The diary is waiting",
waitingHint: "Narrative entries will appear after the next dreaming cycle.",
older: "Older",
newer: "Newer",
reload: "Reload",
reloading: "Reloading…",
},
phrases: {
consolidatingMemories: "consolidating memories…",
tidyingKnowledgeGraph: "tidying the knowledge graph…",
replayingConversations: "replaying today's conversations…",
weavingShortTerm: "weaving short-term into long-term…",
defragmentingMindPalace: "defragmenting the mind palace…",
filingLooseThoughts: "filing away loose thoughts…",
connectingDots: "connecting distant dots…",
compostingContext: "composting old context windows…",
alphabetizingSubconscious: "alphabetizing the subconscious…",
promotingHunches: "promoting promising hunches…",
forgettingNoise: "forgetting what doesn't matter…",
dreamingEmbeddings: "dreaming in embeddings…",
reorganizingAttic: "reorganizing the memory attic…",
indexingDay: "softly indexing the day…",
nurturingInsights: "nurturing fledgling insights…",
simmeringIdeas: "simmering half-formed ideas…",
whisperingVectorStore: "whispering to the vector store…",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder: "Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle: "Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing: "Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}–{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "Gateway Dashboard",
passwordPlaceholder: "optional",
showToken: "Show token",
hideToken: "Hide token",
toggleTokenVisibility: "Toggle token visibility",
showPassword: "Show password",
hidePassword: "Hide password",
togglePasswordVisibility: "Toggle password visibility",
},
chat: {
disconnected: "Disconnected from gateway.",
refreshTitle: "Refresh chat data",
thinkingToggle: "Toggle assistant thinking/working output",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "Toggle focus mode (hide sidebar + page header)",
hideCronSessions: "Hide cron sessions",
showCronSessions: "Show cron sessions",
showCronSessionsHidden: "Show cron sessions ({count} hidden)",
onboardingDisabled: "Disabled during setup",
},
languages: {
en: "English",
zhCN: "简体中文 (Simplified Chinese)",
zhTW: "繁體中文 (Traditional Chinese)",
ptBR: "Português (Brazilian Portuguese)",
de: "Deutsch (German)",
es: "Español (Spanish)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
tr: "Türkçe (Turkish)",
uk: "Українська (Ukrainian)",
id: "Bahasa Indonesia (Indonesian)",
pl: "Polski (Polish)",
th: "ไทย (Thai)",
},
cron: {
summary: {
enabled: "Enabled",
yes: "Yes",
no: "No",
jobs: "Jobs",
nextWake: "Next wake",
refreshing: "Refreshing...",
refresh: "Refresh",
},
jobs: {
title: "Jobs",
subtitle: "All scheduled jobs stored in the gateway.",
shownOf: "{shown} shown of {total}",
searchJobs: "Search jobs",
searchPlaceholder: "Name, description, or agent",
enabled: "Enabled",
schedule: "Schedule",
lastRun: "Last run",
all: "All",
sort: "Sort",
nextRun: "Next run",
recentlyUpdated: "Recently updated",
name: "Name",
direction: "Direction",
ascending: "Ascending",
descending: "Descending",
reset: "Reset",
noMatching: "No matching jobs.",
loading: "Loading...",
loadMore: "Load more jobs",
},
runs: {
title: "Run history",
subtitleAll: "Latest runs across all jobs.",
subtitleJob: "Latest runs for {title}.",
scope: "Scope",
allJobs: "All jobs",
selectedJob: "Selected job",
searchRuns: "Search runs",
searchPlaceholder: "Summary, error, or job",
newestFirst: "Newest first",
oldestFirst: "Oldest first",
status: "Status",
delivery: "Delivery",
clear: "Clear",
allStatuses: "All statuses",
allDelivery: "All delivery",
selectJobHint: "Select a job to inspect run history.",
noMatching: "No matching runs.",
loadMore: "Load more runs",
runStatusOk: "OK",
runStatusError: "Error",
runStatusSkipped: "Skipped",
runStatusUnknown: "Unknown",
deliveryDelivered: "Delivered",
deliveryNotDelivered: "Not delivered",
deliveryUnknown: "Unknown",
deliveryNotRequested: "Not requested",
},
form: {
editJob: "Edit Job",
newJob: "New Job",
updateSubtitle: "Update the selected scheduled job.",
createSubtitle: "Create a scheduled wakeup or agent run.",
required: "Required",
requiredSr: "required",
basics: "Basics",
basicsSub: "Name it, choose the assistant, and set enabled state.",
fieldName: "Name",
description: "Description",
agentId: "Agent ID",
namePlaceholder: "Morning brief",
descriptionPlaceholder: "Optional context for this job",
agentPlaceholder: "main or ops",
agentHelp: "Start typing to pick a known agent, or enter a custom one.",
schedule: "Schedule",
scheduleSub: "Control when this job runs.",
every: "Every",
at: "At",
cronOption: "Cron",
runAt: "Run at",
unit: "Unit",
minutes: "Minutes",
hours: "Hours",
days: "Days",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Timezone (optional)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Pick a common timezone or enter any valid IANA timezone.",
jitterHelp: "Need jitter? Use Advanced → Stagger window / Stagger unit.",
execution: "Execution",
executionSub: "Choose when to wake, and what this job should do.",
session: "Session",
main: "Main",
isolated: "Isolated",
sessionHelp: "Main posts a system event. Isolated runs a dedicated agent turn.",
wakeMode: "Wake mode",
now: "Now",
nextHeartbeat: "Next heartbeat",
wakeModeHelp: "Now triggers immediately. Next heartbeat waits for the next cycle.",
payloadKind: "What should run?",
systemEvent: "Post message to main timeline",
agentTurn: "Run assistant task (isolated)",
systemEventHelp: "Sends your text to the gateway main timeline (good for reminders/triggers).",
agentTurnHelp: "Starts an assistant run in its own session using your prompt.",
timeoutSeconds: "Timeout (seconds)",
timeoutPlaceholder: "Optional, e.g. 90",
timeoutHelp: "Optional. Leave blank to use the gateway default timeout behavior for this run.",
mainTimelineMessage: "Main timeline message",
assistantTaskPrompt: "Assistant task prompt",
deliverySection: "Delivery",
deliverySub: "Choose where run summaries are sent.",
resultDelivery: "Result delivery",
announceDefault: "Announce summary (default)",
webhookPost: "Webhook POST",
noneInternal: "None (internal)",
deliveryHelp: "Announce posts a summary to chat. None keeps execution internal.",
webhookUrl: "Webhook URL",
channel: "Channel",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choose which connected channel receives the summary.",
webhookHelp: "Send run summaries to a webhook endpoint.",
to: "To",
toPlaceholder: "+1555... or chat id",
toHelp: "Optional recipient override (chat id, phone, or user id).",
advanced: "Advanced",
advancedHelp: "Optional overrides for delivery guarantees, schedule jitter, and model controls.",
deleteAfterRun: "Delete after run",
deleteAfterRunHelp: "Best for one-shot reminders that should auto-clean up.",
clearAgentOverride: "Clear agent override",
clearAgentHelp: "Force this job to use the gateway default assistant.",
exactTiming: "Exact timing (no stagger)",
exactTimingHelp: "Run on exact cron boundaries with no spread.",
staggerWindow: "Stagger window",
staggerUnit: "Stagger unit",
staggerPlaceholder: "30",
seconds: "Seconds",
model: "Model",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Start typing to pick a known model, or enter a custom one.",
thinking: "Thinking",
thinkingPlaceholder: "low",
thinkingHelp: "Use a suggested level or enter a provider-specific value.",
bestEffortDelivery: "Best effort delivery",
bestEffortHelp: "Do not fail the job if delivery itself fails.",
cantAddYet: "Can't add job yet",
fillRequired: "Fill the required fields below to enable submit.",
fixFields: "Fix {count} field to continue.",
fixFieldsPlural: "Fix {count} fields to continue.",
saving: "Saving...",
saveChanges: "Save changes",
addJob: "Add job",
cancel: "Cancel",
},
jobList: {
allJobs: "all jobs",
selectJob: "(select a job)",
enabled: "enabled",
disabled: "disabled",
edit: "Edit",
clone: "Clone",
disable: "Disable",
enable: "Enable",
run: "Run",
history: "History",
remove: "Remove",
},
jobDetail: {
system: "System",
prompt: "Prompt",
delivery: "Delivery",
agent: "Agent",
},
jobState: {
status: "Status",
next: "Next",
last: "Last",
},
runEntry: {
noSummary: "No summary.",
runAt: "Run at",
openRunChat: "Open run chat",
next: "Next {rel}",
due: "Due {rel}",
},
errors: {
nameRequired: "Name is required.",
scheduleAtInvalid: "Enter a valid date/time.",
everyAmountInvalid: "Interval must be greater than 0.",
cronExprRequired: "Cron expression is required.",
staggerAmountInvalid: "Stagger must be greater than 0.",
systemTextRequired: "System text is required.",
agentMessageRequired: "Agent message is required.",
timeoutInvalid: "If set, timeout must be greater than 0 seconds.",
webhookUrlRequired: "Webhook URL is required.",
webhookUrlInvalid: "Webhook URL must start with http:// or https://.",
invalidRunTime: "Invalid run time.",
invalidIntervalAmount: "Invalid interval amount.",
cronExprRequiredShort: "Cron expression required.",
invalidStaggerAmount: "Invalid stagger amount.",
systemEventTextRequired: "System event text required.",
agentMessageRequiredShort: "Agent message required.",
nameRequiredShort: "Name required.",
},
},
};
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.3Bemerkung:
(vorverarbeitet am 2026-05-26)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.