Scheduled: where a task runs (runs_on), and choosing a linked computer in the form
ci / ui (push) Waiting to run
ci / check (push) Failing after 4s
ci / start (push) Failing after 4s

The task page says the computer, folder, mode and approval wait, and whether
the computer is away or does not accept scheduled work (/devices
`scheduled`); a run waiting for it says so. The form offers Where it runs
where the server's devices say whether they accept, sending runs_on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
HomerandClaude Opus 5.5 committed 2026-11-10 14:24:24 +00:00
1 parent 3101552858
commit df27ca82fa
9 files changed
+501 -8

No files matched your search

+5
View File
@@ -52,6 +52,11 @@ All notable changes to LLeMbas Desktop. The format follows
- **The release your server recommends.** Settings › About names the Desktop release that goes - **The release your server recommends.** Settings › About names the Desktop release that goes
with the server's version when it is newer than this one (a beta only to a beta install), with with the server's version when it is newer than this one (a beta only to a beta install), with
a link to its release page. a link to its release page.
- **Scheduled tasks on a linked computer.** A task's page says where it runs: on the server, or
on a computer, in a folder and mode, with how long an approval waits, and whether that computer
is away or does not accept scheduled work. A run waiting for its computer says so. The form
offers "Where it runs" where the server can: this computer or another linked one that accepts
scheduled work, its folder (this computer's agent folder to begin with), mode and wait.
### Fixed ### Fixed
+1 -1
View File
@@ -16,7 +16,7 @@ OUT="tests/ui/fixtures"
FILES="chat_agent.json event_ask.json event_status.json event_status_idle.json event_status_person.json FILES="chat_agent.json event_ask.json event_status.json event_status_idle.json event_status_person.json
event_status_stopped.json event_tree.json models_agent.json subagent_findings.json subagent_transcript.json tree.json event_status_stopped.json event_tree.json models_agent.json subagent_findings.json subagent_transcript.json tree.json
me.json folders.json folder.json search.json memories.json memory.json scope.json push_schedule.json push_schedule_failed.json me.json folders.json folder.json search.json memories.json memory.json scope.json push_schedule.json push_schedule_failed.json
apps.json apps_stable.json event_schedules.json schedule.json schedule_run.json chat.json chats_listed.json files_listing.json" apps.json apps_stable.json event_schedules.json schedule.json schedule_on_device.json schedule_run.json chat.json chats_listed.json files_listing.json"
[ $# -eq 1 ] || { echo "usage: scripts/fetch-fixtures.sh <server-ref>" >&2; exit 2; } [ $# -eq 1 ] || { echo "usage: scripts/fetch-fixtures.sh <server-ref>" >&2; exit 2; }
commit="$(git -C "$SERVER" rev-parse --verify --quiet "$1^{commit}")" \ commit="$(git -C "$SERVER" rev-parse --verify --quiet "$1^{commit}")" \
+65
View File
@@ -524,6 +524,23 @@ KEYS = (
"Your server recommends LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.", "The release that goes with the server's version. This is %(current)s.",
"Open the release page", "Open the release page",
# scheduled.js: where a task runs
"Where it runs",
"On this server",
"does not accept scheduled work",
"not linked now",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).",
"Folder on the computer",
"A full path, inside a folder the computer allows remote work in.",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.",
"An approval waits (minutes)",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.",
"A linked computer",
"Away now: a run waits for it, then counts as missed.",
"It does not accept scheduled work: turn on Accept scheduled work there.",
"This computer (%(name)s)",
"Waiting for the computer",
"approvals wait %(n)s min",
) )
# The app's own sentences. The mode names (Manual, Edit, Auto, Plan) stay English, as the # The app's own sentences. The mode names (Manual, Edit, Auto, Plan) stay English, as the
@@ -797,6 +814,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "Váš server doporučuje LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s": "Váš server doporučuje LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.": "Vydání, které patří k verzi serveru. Toto je %(current)s.", "The release that goes with the server's version. This is %(current)s.": "Vydání, které patří k verzi serveru. Toto je %(current)s.",
"Open the release page": "Otevřít stránku vydání", "Open the release page": "Otevřít stránku vydání",
"A linked computer": "Propojený počítač",
"Away now: a run waits for it, then counts as missed.": "Teď je pryč: spuštění na něj počká, pak se počítá jako zmeškané.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Nepřijímá plánovanou práci: zapněte tam Accept scheduled work.",
"This computer (%(name)s)": "Tento počítač (%(name)s)",
"Waiting for the computer": "Čeká na počítač",
"approvals wait %(n)s min": "schválení čeká %(n)s min",
}, },
"de": { "de": {
"Sign in again: the server no longer accepts this app's sign-in.": "Melden Sie sich erneut an: Der Server nimmt die Anmeldung dieser App nicht mehr an.", "Sign in again: the server no longer accepts this app's sign-in.": "Melden Sie sich erneut an: Der Server nimmt die Anmeldung dieser App nicht mehr an.",
@@ -1065,6 +1088,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "Ihr Server empfiehlt LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s": "Ihr Server empfiehlt LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.": "Die Version, die zur Version des Servers passt. Dies ist %(current)s.", "The release that goes with the server's version. This is %(current)s.": "Die Version, die zur Version des Servers passt. Dies ist %(current)s.",
"Open the release page": "Release-Seite öffnen", "Open the release page": "Release-Seite öffnen",
"A linked computer": "Ein verknüpfter Computer",
"Away now: a run waits for it, then counts as missed.": "Gerade nicht da: Ein Lauf wartet auf ihn und zählt dann als verpasst.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Er nimmt keine geplante Arbeit an: Schalten Sie dort Accept scheduled work ein.",
"This computer (%(name)s)": "Dieser Computer (%(name)s)",
"Waiting for the computer": "Wartet auf den Computer",
"approvals wait %(n)s min": "Freigaben warten %(n)s Min.",
}, },
"es": { "es": {
"Sign in again: the server no longer accepts this app's sign-in.": "Vuelva a iniciar sesión: el servidor ya no acepta el inicio de sesión de esta aplicación.", "Sign in again: the server no longer accepts this app's sign-in.": "Vuelva a iniciar sesión: el servidor ya no acepta el inicio de sesión de esta aplicación.",
@@ -1333,6 +1362,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "Su servidor recomienda LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s": "Su servidor recomienda LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.": "La versión que corresponde a la del servidor. Esta es %(current)s.", "The release that goes with the server's version. This is %(current)s.": "La versión que corresponde a la del servidor. Esta es %(current)s.",
"Open the release page": "Abrir la página de la versión", "Open the release page": "Abrir la página de la versión",
"A linked computer": "Un ordenador vinculado",
"Away now: a run waits for it, then counts as missed.": "Ausente ahora: una ejecución lo espera y luego cuenta como perdida.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "No acepta trabajo programado: active allí Accept scheduled work.",
"This computer (%(name)s)": "Este ordenador (%(name)s)",
"Waiting for the computer": "Esperando al ordenador",
"approvals wait %(n)s min": "las aprobaciones esperan %(n)s min",
}, },
"fr": { "fr": {
"Sign in again: the server no longer accepts this app's sign-in.": "Reconnectez-vous : le serveur n’accepte plus la connexion de cette application.", "Sign in again: the server no longer accepts this app's sign-in.": "Reconnectez-vous : le serveur n’accepte plus la connexion de cette application.",
@@ -1601,6 +1636,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "Votre serveur recommande LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s": "Votre serveur recommande LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.": "La version qui va avec celle du serveur. Celle-ci est la %(current)s.", "The release that goes with the server's version. This is %(current)s.": "La version qui va avec celle du serveur. Celle-ci est la %(current)s.",
"Open the release page": "Ouvrir la page de la version", "Open the release page": "Ouvrir la page de la version",
"A linked computer": "Un ordinateur lié",
"Away now: a run waits for it, then counts as missed.": "Absent pour l’instant : une exécution l’attend, puis compte comme manquée.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Il n’accepte pas le travail planifié : activez-y Accept scheduled work.",
"This computer (%(name)s)": "Cet ordinateur (%(name)s)",
"Waiting for the computer": "En attente de l’ordinateur",
"approvals wait %(n)s min": "les approbations attendent %(n)s min",
}, },
"hu": { "hu": {
"Sign in again: the server no longer accepts this app's sign-in.": "Jelentkezzen be újra: a szerver már nem fogadja el ennek az alkalmazásnak a bejelentkezését.", "Sign in again: the server no longer accepts this app's sign-in.": "Jelentkezzen be újra: a szerver már nem fogadja el ennek az alkalmazásnak a bejelentkezését.",
@@ -1869,6 +1910,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "A szervere a LLeMbas Desktop %(version)s verziót ajánlja", "Your server recommends LLeMbas Desktop %(version)s": "A szervere a LLeMbas Desktop %(version)s verziót ajánlja",
"The release that goes with the server's version. This is %(current)s.": "A szerver verziójához tartozó kiadás. Ez a %(current)s.", "The release that goes with the server's version. This is %(current)s.": "A szerver verziójához tartozó kiadás. Ez a %(current)s.",
"Open the release page": "Kiadás oldalának megnyitása", "Open the release page": "Kiadás oldalának megnyitása",
"A linked computer": "Egy összekapcsolt számítógép",
"Away now: a run waits for it, then counts as missed.": "Most nem elérhető: a futás megvárja, aztán kihagyottnak számít.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Nem fogad ütemezett munkát: kapcsolja be ott az Accept scheduled work beállítást.",
"This computer (%(name)s)": "Ez a számítógép (%(name)s)",
"Waiting for the computer": "A számítógépre vár",
"approvals wait %(n)s min": "a jóváhagyások %(n)s percig várnak",
}, },
"it": { "it": {
"Sign in again: the server no longer accepts this app's sign-in.": "Accedi di nuovo: il server non accetta più l’accesso di questa app.", "Sign in again: the server no longer accepts this app's sign-in.": "Accedi di nuovo: il server non accetta più l’accesso di questa app.",
@@ -2137,6 +2184,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "Il tuo server consiglia LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s": "Il tuo server consiglia LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.": "La versione che va con quella del server. Questa è la %(current)s.", "The release that goes with the server's version. This is %(current)s.": "La versione che va con quella del server. Questa è la %(current)s.",
"Open the release page": "Apri la pagina della versione", "Open the release page": "Apri la pagina della versione",
"A linked computer": "Un computer collegato",
"Away now: a run waits for it, then counts as missed.": "Assente ora: un’esecuzione lo aspetta, poi conta come persa.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Non accetta lavoro pianificato: attiva lì Accept scheduled work.",
"This computer (%(name)s)": "Questo computer (%(name)s)",
"Waiting for the computer": "In attesa del computer",
"approvals wait %(n)s min": "le approvazioni attendono %(n)s min",
}, },
"pl": { "pl": {
"Sign in again: the server no longer accepts this app's sign-in.": "Zaloguj się ponownie: serwer nie przyjmuje już logowania tej aplikacji.", "Sign in again: the server no longer accepts this app's sign-in.": "Zaloguj się ponownie: serwer nie przyjmuje już logowania tej aplikacji.",
@@ -2405,6 +2458,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "Twój serwer zaleca LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s": "Twój serwer zaleca LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.": "Wydanie pasujące do wersji serwera. To jest %(current)s.", "The release that goes with the server's version. This is %(current)s.": "Wydanie pasujące do wersji serwera. To jest %(current)s.",
"Open the release page": "Otwórz stronę wydania", "Open the release page": "Otwórz stronę wydania",
"A linked computer": "Połączony komputer",
"Away now: a run waits for it, then counts as missed.": "Teraz nieobecny: uruchomienie na niego czeka, potem liczy się jako pominięte.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Nie przyjmuje zaplanowanej pracy: włącz tam Accept scheduled work.",
"This computer (%(name)s)": "Ten komputer (%(name)s)",
"Waiting for the computer": "Czeka na komputer",
"approvals wait %(n)s min": "zatwierdzenia czekają %(n)s min",
}, },
"sk": { "sk": {
"Sign in again: the server no longer accepts this app's sign-in.": "Prihláste sa znova: server už neprijíma prihlásenie tejto aplikácie.", "Sign in again: the server no longer accepts this app's sign-in.": "Prihláste sa znova: server už neprijíma prihlásenie tejto aplikácie.",
@@ -2673,6 +2732,12 @@ OWN: dict[str, dict[str, str]] = {
"Your server recommends LLeMbas Desktop %(version)s": "Váš server odporúča LLeMbas Desktop %(version)s", "Your server recommends LLeMbas Desktop %(version)s": "Váš server odporúča LLeMbas Desktop %(version)s",
"The release that goes with the server's version. This is %(current)s.": "Vydanie, ktoré patrí k verzii servera. Toto je %(current)s.", "The release that goes with the server's version. This is %(current)s.": "Vydanie, ktoré patrí k verzii servera. Toto je %(current)s.",
"Open the release page": "Otvoriť stránku vydania", "Open the release page": "Otvoriť stránku vydania",
"A linked computer": "Prepojený počítač",
"Away now: a run waits for it, then counts as missed.": "Teraz nie je k dispozícii: spustenie naň počká, potom sa počíta ako zmeškané.",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Neprijíma plánovanú prácu: zapnite tam Accept scheduled work.",
"This computer (%(name)s)": "Tento počítač (%(name)s)",
"Waiting for the computer": "Čaká na počítač",
"approvals wait %(n)s min": "schválenia čakajú %(n)s min",
}, },
} }
+98
View File
@@ -0,0 +1,98 @@
{
"schedule": {
"id": "sched3",
"title": "Nightly tests",
"instruction": "Run the tests.",
"request": "every night at 02:00",
"rule": {
"every": {
"minutes": 1440
}
},
"description": "Every 1 day",
"timezone": "UTC",
"enabled": true,
"next_run": "2026-01-03T02:00:00+00:00",
"next_runs": [],
"target": "chat",
"mode": "fresh",
"notify": "matters",
"catch_up": "one",
"grace_minutes": null,
"model": null,
"effort": null,
"agents": null,
"tools": [
"files",
"recall",
"search",
"fetch",
"memory",
"skills",
"plan"
],
"origin": "user",
"chat_id": "chat2",
"fired_count": 3,
"failure_streak": 0,
"watch": {
"kind": "command",
"command": "git log -1 --format=%H",
"timeout_s": 30,
"target": "git log -1 --format=%H",
"changed_at": "2026-01-02T03:04:05+00:00"
},
"runs_on": {
"device": "tok1",
"device_name": "bag-end",
"cwd": "/home/frodo/waybread",
"mode": "edit",
"approval_wait_minutes": 30
},
"last_error": null,
"last_run": {
"id": "run5",
"schedule_id": "sched3",
"status": "waiting",
"timing": "on_time",
"missed": 0,
"due_at": "2026-01-02T03:04:05+00:00",
"started_at": null,
"finished_at": null,
"waiting_for": "device",
"retry_at": "2026-01-02T03:09:05+00:00",
"progress": {
"phase": "retrying",
"since": 1767323045000,
"reason": "Waiting for bag-end to be linked.",
"in": 0,
"attempt": 1
},
"attempts": 1,
"model": {
"id": null,
"name": null,
"reason": null,
"switched_from": null
},
"tokens": {
"prompt": 0,
"completion": 0
},
"cost": null,
"chat_id": null,
"message_id": null,
"report_path": null,
"preview": "",
"error": {
"class": "device_away",
"text": "Waiting for bag-end to be linked."
},
"notified": false,
"notification": null,
"watch": null
},
"running": false,
"created_at": "2026-01-02T03:04:05+00:00"
}
}
+96
View File
@@ -1586,6 +1586,102 @@ test("K8: nothing is offered that is not newer, a beta to a stable install, or a
} }
}) })
// L8: where a scheduled task runs (runs_on, fixture schedule_on_device.json; /devices `scheduled`).
function l8(devices) {
const on = fixture("schedule_on_device")
const id = on.schedule.id
return {
status: status({ host: "workbench" }),
routes: baseRoutes({
"GET /devices": { devices },
"GET /schedules": { schedules: [on.schedule] },
[`GET /schedules/${id}`]: on,
[`GET /schedules/${id}/runs`]: { runs: [on.schedule.last_run], more: false },
"GET /schedules/models": { models: [], instance: [], mine: [] },
"POST /schedules/compile": { ok: true, reason: "", title: "Build check", instruction: "Check the build.", target: "chat", rule: { at: { times: ["07:30"] } }, description: "Every day at 07:30", next_runs: [], timezone: "UTC" },
"POST /schedules": { schedule: { ...on.schedule, id: "sched9" } },
"GET /schedules/sched9": { schedule: { ...on.schedule, id: "sched9" } },
"GET /schedules/sched9/runs": { runs: [], more: false },
}),
streams: {},
}
}
const bagEnd = (over = {}) => ({ id: "tok1", name: "bag-end", host: "bag-end", platform: "linux", terminal: true, scheduled: true, max_mode: "", ...over })
async function openTask(p) {
await p.waitForSelector("#composer")
await p.evaluate(() => window.__mock.emit("open-schedule", { schedule: "sched3", run: "run5" }))
await p.waitForSelector(".fact >> text=Where it runs")
}
test("L8: a task on a linked computer says the computer, the folder and mode; a run waits for it", async () => {
const p = await page(l8([bagEnd()]))
await openTask(p)
const where = await p.textContent(".fact:has-text('Where it runs')")
assert.match(where, /bag-end/)
assert.match(where, /\/home\/frodo\/waybread/)
assert.match(where, /Edit — asks before commands · approvals wait 30 min/)
assert.equal(await p.locator(".fact.is-warning").count(), 0)
assert.match(await p.textContent(".run[data-id='run5']"), /Waiting for the computer/)
assert.match(await p.textContent(".run[data-id='run5']"), /Waiting for bag-end to be linked\./)
await shot(p, "l8-task-1280")
assert.deepEqual(p.errors, [])
})
test("L8: a computer away, or not accepting scheduled work, is said on the task", async () => {
for (const [devices, words] of [
[[], /Away now/],
[[bagEnd({ scheduled: false })], /does not accept scheduled work/],
]) {
const p = await page(l8(devices))
await openTask(p)
assert.match(await p.textContent(".fact.is-warning"), words)
assert.deepEqual(p.errors, [])
await p.context().close()
}
})
test("L8: a new task can run on this computer, in a folder and mode; one not accepting cannot be chosen", async () => {
const p = await page(l8([bagEnd({ scheduled: false }), bagEnd({ id: "token1", name: "workbench", host: "workbench" })]))
await p.waitForSelector("#composer")
await p.evaluate(() => window.__mock.emit("open-schedule", { schedule: "sched3", run: "run5" }))
await p.waitForSelector("#page-scheduled:not([hidden])")
await p.keyboard.press("Control+k")
await p.fill(".palette__input", "New scheduled")
await p.keyboard.press("Enter")
await p.fill("#sched-words", "every day at 7:30 check the build")
await p.click(".sched--new button[type=submit]")
await p.waitForSelector("#sched-where")
const options = await p.$$eval("#sched-where option", (l) => l.map((o) => [o.textContent, o.disabled]))
assert.deepEqual(options, [["On this server", false], ["bag-end — does not accept scheduled work", true], ["This computer (workbench)", false]])
await p.selectOption("#sched-where", "token1")
assert.equal(await p.inputValue("#sched-cwd"), "/home/dev/project")
await p.selectOption("#sched-runmode", "auto")
await p.fill("#sched-wait", "45")
await shot(p, "l8-form-1280")
await p.click("#sched-save")
await p.waitForFunction(() => window.__mock.api("POST", "/schedules").some((c) => c.args.path === "/schedules"))
const body = (await p.evaluate(() => window.__mock.api("POST", "/schedules").find((c) => c.args.path === "/schedules"))).args.body
assert.deepEqual(body.runs_on, { device: "token1", cwd: "/home/dev/project", mode: "auto", approval_wait_minutes: 45 })
assert.deepEqual(p.errors, [])
})
test("L8: at 390 px the form with a computer chosen stays inside the window", async () => {
const p = await page(l8([bagEnd()]), { width: 390, height: 844 })
await p.waitForSelector("#composer")
await p.evaluate(() => window.__mock.emit("open-schedule", { schedule: "sched3", run: "run5" }))
await p.waitForSelector(".fact >> text=Where it runs")
assert.ok(await noSideways(p, 390), "nothing scrolls sideways")
await shot(p, "l8-task-390")
await p.click("#sched-edit")
await p.waitForSelector("#sched-cwd")
assert.ok(await noSideways(p, 390), "nothing scrolls sideways")
await shot(p, "l8-form-390")
assert.deepEqual(p.errors, [])
})
// --- Run ---------------------------------------------------------------------------------------- // --- Run ----------------------------------------------------------------------------------------
const only = process.argv[2] || "" const only = process.argv[2] || ""
+3
View File
@@ -1550,6 +1550,9 @@ details[open] > summary .step__chev .icon { transform: rotate(90deg); }
.sched + .sched__history { margin-top: var(--sp-6); } .sched + .sched__history { margin-top: var(--sp-6); }
.sched__trouble { padding: var(--sp-3) var(--sp-4); color: var(--warning); background: var(--warning-soft); border-radius: var(--radius-soft); overflow-wrap: anywhere; } .sched__trouble { padding: var(--sp-3) var(--sp-4); color: var(--warning); background: var(--warning-soft); border-radius: var(--radius-soft); overflow-wrap: anywhere; }
.fact__hint { font: var(--text-xs) var(--font-ui); color: var(--ink-faint); } .fact__hint { font: var(--text-xs) var(--font-ui); color: var(--ink-faint); }
/* Where it runs: the computer over its folder; a computer that cannot take the run says so in colour. */
.fact__path { display: block; font: var(--text-xs) var(--font-mono); color: var(--ink-muted); overflow-wrap: anywhere; }
.fact.is-warning .fact__hint { color: var(--warning); }
/* The form: the When field's words on the control's track, one line, the time zone as its hint. */ /* The form: the When field's words on the control's track, one line, the time zone as its hint. */
.sched__desc { align-self: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: var(--text-sm); } .sched__desc { align-self: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: var(--text-sm); }
.sched__desc.is-error { color: var(--warning); } .sched__desc.is-error { color: var(--warning); }
+129 -1
View File
@@ -34,8 +34,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "Na zaneprázdněný model se čeká, pak se použije další volný.", "A busy model is waited for, then the next free one is used.": "Na zaneprázdněný model se čeká, pak se použije další volný.",
"A chat asking for more is lowered to this.": "Konverzace, která chce víc, je snížena na tohle.", "A chat asking for more is lowered to this.": "Konverzace, která chce víc, je snížena na tohle.",
"A chat on %(server)s, with your account's models and files.": "Konverzace na %(server)s s modely a soubory vašeho účtu.", "A chat on %(server)s, with your account's models and files.": "Konverzace na %(server)s s modely a soubory vašeho účtu.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "Příkaz, který spuštění potřebuje schválit, přijde do telefonu jako karta. Pokud do té doby nebude zodpovězen, počítá se jako zamítnutý.",
"A full path, inside a folder the computer allows remote work in.": "Úplná cesta ve složce, ve které počítač povoluje vzdálenou práci.",
"A linked computer": "Propojený počítač",
"A new chat for each run": "Nová konverzace pro každé spuštění", "A new chat for each run": "Nová konverzace pro každé spuštění",
"A result, but not a run with nothing to report.": "Výsledek, ale ne spuštění, které nemá co hlásit.", "A result, but not a run with nothing to report.": "Výsledek, ale ne spuštění, které nemá co hlásit.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "Spuštění na počítači je tam agentní chat. Počítač to musí povolit: „Accept scheduled work“ v jeho LLeMbas CLI (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Naplánovaná úloha selhala 3krát za sebou. Pozastavit ji?", "A scheduled task failed 3 times in a row. Pause it?": "Naplánovaná úloha selhala 3krát za sebou. Pozastavit ji?",
"A scheduled task failed.": "Naplánovaná úloha selhala.", "A scheduled task failed.": "Naplánovaná úloha selhala.",
"A scheduled task has a result.": "Naplánovaná úloha má výsledek.", "A scheduled task has a result.": "Naplánovaná úloha má výsledek.",
@@ -56,6 +60,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Tady vždy povoleno", "Always allowed here": "Tady vždy povoleno",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Agentní konverzace pracuje ve složce na zařízení %(device)s přes tamního agenta LLeMbas.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Agentní konverzace pracuje ve složce na zařízení %(device)s přes tamního agenta LLeMbas.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Agentní konverzace pracuje ve složce na tomto počítači přes agenta vestavěného v této aplikaci.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Agentní konverzace pracuje ve složce na tomto počítači přes agenta vestavěného v této aplikaci.",
"An approval waits (minutes)": "Schválení čeká (minuty)",
"Another device": "Jiné zařízení", "Another device": "Jiné zařízení",
"Answer": "Odpovědět", "Answer": "Odpovědět",
"Appearance": "Vzhled", "Appearance": "Vzhled",
@@ -66,6 +71,7 @@ const LEMBAS_I18N = {
"Attach files": "Přikládat soubory", "Attach files": "Přikládat soubory",
"Auto — asks nothing": "Auto — na nic se neptá", "Auto — asks nothing": "Auto — na nic se neptá",
"Automatic compaction is off.": "Automatické shrnutí je vypnuté.", "Automatic compaction is off.": "Automatické shrnutí je vypnuté.",
"Away now: a run waits for it, then counts as missed.": "Teď je pryč: spuštění na něj počká, pak se počítá jako zmeškané.",
"Back": "Zpět", "Back": "Zpět",
"Background command": "Příkaz na pozadí", "Background command": "Příkaz na pozadí",
"Background tasks": "Úlohy na pozadí", "Background tasks": "Úlohy na pozadí",
@@ -132,6 +138,7 @@ const LEMBAS_I18N = {
"Edit": "Upravit", "Edit": "Upravit",
"Edit %(title)s": "Upravit %(title)s", "Edit %(title)s": "Upravit %(title)s",
"Edit message": "Upravit zprávu", "Edit message": "Upravit zprávu",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit, pokud nezvolíte jinak; Auto spouští příkazy bez ptaní. Počítač ho může snížit.",
"Edit — asks before commands": "Edit — ptá se před příkazy", "Edit — asks before commands": "Edit — ptá se před příkazy",
"Empty folder": "Prázdná složka", "Empty folder": "Prázdná složka",
"Ended": "Skončené", "Ended": "Skončené",
@@ -147,6 +154,7 @@ const LEMBAS_I18N = {
"Folder": "Složka", "Folder": "Složka",
"Folder name": "Název složky", "Folder name": "Název složky",
"Folder on %(device)s": "Složka na zařízení %(device)s", "Folder on %(device)s": "Složka na zařízení %(device)s",
"Folder on the computer": "Složka na počítači",
"Free space": "Volné místo", "Free space": "Volné místo",
"Hello": "Dobrý den", "Hello": "Dobrý den",
"Hello, %(name)s": "Dobrý den, %(name)s", "Hello, %(name)s": "Dobrý den, %(name)s",
@@ -155,6 +163,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Vlastními slovy. Server z nich vytvoří pravidlo a pokyn a před uložením vám ukáže další spuštění.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Vlastními slovy. Server z nich vytvoří pravidlo a pokyn a před uložením vám ukáže další spuštění.",
"Install LLeMbas %(version)s…": "Nainstalovat LLeMbas %(version)s…", "Install LLeMbas %(version)s…": "Nainstalovat LLeMbas %(version)s…",
"Instruction files": "Soubory s pokyny", "Instruction files": "Soubory s pokyny",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Nepřijímá plánovanou práci: zapněte tam Accept scheduled work.",
"It has not run yet.": "Ještě neběžel.", "It has not run yet.": "Ještě neběžel.",
"It says: %(purpose)s": "Model uvádí: %(purpose)s", "It says: %(purpose)s": "Model uvádí: %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "Uloženo v této aplikaci na tomto počítači. Okno se znovu otevře ve zvoleném jazyce.", "Kept in this app on this computer. The window opens again in the language chosen.": "Uloženo v této aplikaci na tomto počítači. Okno se znovu otevře ve zvoleném jazyce.",
@@ -226,6 +235,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "V této konverzaci není co přepnout.", "Nothing to switch in this chat.": "V této konverzaci není co přepnout.",
"Nothing yet.": "Zatím nic.", "Nothing yet.": "Zatím nic.",
"Notifications": "Upozornění", "Notifications": "Upozornění",
"On this server": "Na tomto serveru",
"One chat that grows": "Jedna konverzace, která roste", "One chat that grows": "Jedna konverzace, která roste",
"Only in its history.": "Jen v její historii.", "Only in its history.": "Jen v její historii.",
"Open in the viewer": "Otevřít v prohlížeči souborů", "Open in the viewer": "Otevřít v prohlížeči souborů",
@@ -379,6 +389,7 @@ const LEMBAS_I18N = {
"Think before answering": "Přemýšlet před odpovědí", "Think before answering": "Přemýšlet před odpovědí",
"Thinking": "Přemýšlí", "Thinking": "Přemýšlí",
"This computer": "Tento počítač", "This computer": "Tento počítač",
"This computer (%(name)s)": "Tento počítač (%(name)s)",
"This computer is not linked yet.": "Tento počítač ještě není propojený.", "This computer is not linked yet.": "Tento počítač ještě není propojený.",
"This computer's (%(language)s)": "Podle tohoto počítače (%(language)s)", "This computer's (%(language)s)": "Podle tohoto počítače (%(language)s)",
"This device is not linked right now.": "Toto zařízení teď není připojené.", "This device is not linked right now.": "Toto zařízení teď není připojené.",
@@ -407,6 +418,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "Čeká na volný model", "Waiting for a free model": "Čeká na volný model",
"Waiting for subagents: {{running}} running": "Čeká na podagenty: pracuje {{running}}", "Waiting for subagents: {{running}} running": "Čeká na podagenty: pracuje {{running}}",
"Waiting for the browser…": "Čeká se na prohlížeč…", "Waiting for the browser…": "Čeká se na prohlížeč…",
"Waiting for the computer": "Čeká na počítač",
"Waiting for the reply before it": "Čeká na odpověď před ní", "Waiting for the reply before it": "Čeká na odpověď před ní",
"Waiting for you: {{what}}": "Čeká na vás: {{what}}", "Waiting for you: {{what}}": "Čeká na vás: {{what}}",
"Waiting for your answer": "Čeká na vaši odpověď", "Waiting for your answer": "Čeká na vaši odpověď",
@@ -417,6 +429,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Co si o vás vaše modely pamatují napříč konverzacemi. Cokoli tu můžete změnit nebo odstranit.", "What your models remember about you, across chats. Change or remove anything here.": "Co si o vás vaše modely pamatují napříč konverzacemi. Cokoli tu můžete změnit nebo odstranit.",
"When": "Kdy", "When": "Kdy",
"When it matters": "Když na tom záleží", "When it matters": "Když na tom záleží",
"Where it runs": "Kde se spouští",
"Wide": "Široký", "Wide": "Široký",
"Writing": "Píše", "Writing": "Píše",
"Writing down…": "Zapisuji…", "Writing down…": "Zapisuji…",
@@ -440,12 +453,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "všechny jeho sloty jsou obsazené", "all its slots are in use": "všechny jeho sloty jsou obsazené",
"allow {{tool}}?": "povolit {{tool}}?", "allow {{tool}}?": "povolit {{tool}}?",
"an approval": "povolení", "an approval": "povolení",
"approvals wait %(n)s min": "schválení čeká %(n)s min",
"budget": "rozpočet", "budget": "rozpočet",
"busy": "zaneprázdněný", "busy": "zaneprázdněný",
"by you": "vámi", "by you": "vámi",
"caught up": "dohnáno", "caught up": "dohnáno",
"dark": "tmavý", "dark": "tmavý",
"default": "výchozí", "default": "výchozí",
"does not accept scheduled work": "nepřijímá plánovanou práci",
"done": "hotovo", "done": "hotovo",
"failed": "selhalo", "failed": "selhalo",
"findings: %(n)s": "zjištění: %(n)s", "findings: %(n)s": "zjištění: %(n)s",
@@ -458,6 +473,7 @@ const LEMBAS_I18N = {
"light": "světlý", "light": "světlý",
"messages: %(n)s": "zprávy: %(n)s", "messages: %(n)s": "zprávy: %(n)s",
"not linked": "nepropojeno", "not linked": "nepropojeno",
"not linked now": "teď není propojený",
"off": "vypnuto", "off": "vypnuto",
"out of context": "bez kontextu", "out of context": "bez kontextu",
"paused: context full": "pozastavený: plný kontext", "paused: context full": "pozastavený: plný kontext",
@@ -502,8 +518,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "Auf ein belegtes Modell wird gewartet, dann wird das nächste freie genommen.", "A busy model is waited for, then the next free one is used.": "Auf ein belegtes Modell wird gewartet, dann wird das nächste freie genommen.",
"A chat asking for more is lowered to this.": "Ein Chat, der mehr verlangt, wird hierauf begrenzt.", "A chat asking for more is lowered to this.": "Ein Chat, der mehr verlangt, wird hierauf begrenzt.",
"A chat on %(server)s, with your account's models and files.": "Ein Chat auf %(server)s, mit den Modellen und Dateien Ihres Kontos.", "A chat on %(server)s, with your account's models and files.": "Ein Chat auf %(server)s, mit den Modellen und Dateien Ihres Kontos.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "Ein Befehl, den der Lauf genehmigt braucht, kommt als Karte auf Ihr Telefon. Bis dahin unbeantwortet, gilt er als abgelehnt.",
"A full path, inside a folder the computer allows remote work in.": "Ein vollständiger Pfad in einem Ordner, in dem der Computer Fernarbeit erlaubt.",
"A linked computer": "Ein verknüpfter Computer",
"A new chat for each run": "Ein neuer Chat für jeden Lauf", "A new chat for each run": "Ein neuer Chat für jeden Lauf",
"A result, but not a run with nothing to report.": "Ein Ergebnis, aber kein Lauf ohne Neuigkeiten.", "A result, but not a run with nothing to report.": "Ein Ergebnis, aber kein Lauf ohne Neuigkeiten.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "Ein Lauf auf einem Computer ist dort ein Agenten-Chat. Der Computer muss es erlauben: „Accept scheduled work“ in seinem LLeMbas CLI (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Eine geplante Aufgabe ist 3-mal hintereinander fehlgeschlagen. Pausieren?", "A scheduled task failed 3 times in a row. Pause it?": "Eine geplante Aufgabe ist 3-mal hintereinander fehlgeschlagen. Pausieren?",
"A scheduled task failed.": "Eine geplante Aufgabe ist fehlgeschlagen.", "A scheduled task failed.": "Eine geplante Aufgabe ist fehlgeschlagen.",
"A scheduled task has a result.": "Eine geplante Aufgabe hat ein Ergebnis.", "A scheduled task has a result.": "Eine geplante Aufgabe hat ein Ergebnis.",
@@ -524,6 +544,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Hier immer erlaubt", "Always allowed here": "Hier immer erlaubt",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Ein Agenten-Chat arbeitet in einem Ordner auf %(device)s, über den LLeMbas-Agenten dort.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Ein Agenten-Chat arbeitet in einem Ordner auf %(device)s, über den LLeMbas-Agenten dort.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Ein Agenten-Chat arbeitet in einem Ordner auf diesem Computer, über den in diese App eingebauten Agenten.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Ein Agenten-Chat arbeitet in einem Ordner auf diesem Computer, über den in diese App eingebauten Agenten.",
"An approval waits (minutes)": "Eine Genehmigung wartet (Minuten)",
"Another device": "Ein anderes Gerät", "Another device": "Ein anderes Gerät",
"Answer": "Antworten", "Answer": "Antworten",
"Appearance": "Darstellung", "Appearance": "Darstellung",
@@ -534,6 +555,7 @@ const LEMBAS_I18N = {
"Attach files": "Dateien anhängen", "Attach files": "Dateien anhängen",
"Auto — asks nothing": "Auto — fragt nichts", "Auto — asks nothing": "Auto — fragt nichts",
"Automatic compaction is off.": "Die automatische Zusammenfassung ist aus.", "Automatic compaction is off.": "Die automatische Zusammenfassung ist aus.",
"Away now: a run waits for it, then counts as missed.": "Gerade nicht da: Ein Lauf wartet auf ihn und zählt dann als verpasst.",
"Back": "Zurück", "Back": "Zurück",
"Background command": "Hintergrundbefehl", "Background command": "Hintergrundbefehl",
"Background tasks": "Hintergrundaufgaben", "Background tasks": "Hintergrundaufgaben",
@@ -600,6 +622,7 @@ const LEMBAS_I18N = {
"Edit": "Bearbeiten", "Edit": "Bearbeiten",
"Edit %(title)s": "%(title)s bearbeiten", "Edit %(title)s": "%(title)s bearbeiten",
"Edit message": "Nachricht bearbeiten", "Edit message": "Nachricht bearbeiten",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit, sofern Sie nichts anderes wählen; Auto führt Befehle ohne Nachfrage aus. Der Computer kann ihn herabsetzen.",
"Edit — asks before commands": "Edit — fragt vor Befehlen", "Edit — asks before commands": "Edit — fragt vor Befehlen",
"Empty folder": "Leerer Ordner", "Empty folder": "Leerer Ordner",
"Ended": "Beendet", "Ended": "Beendet",
@@ -615,6 +638,7 @@ const LEMBAS_I18N = {
"Folder": "Ordner", "Folder": "Ordner",
"Folder name": "Ordnername", "Folder name": "Ordnername",
"Folder on %(device)s": "Ordner auf %(device)s", "Folder on %(device)s": "Ordner auf %(device)s",
"Folder on the computer": "Ordner auf dem Computer",
"Free space": "Freier Platz", "Free space": "Freier Platz",
"Hello": "Hallo", "Hello": "Hallo",
"Hello, %(name)s": "Hallo, %(name)s", "Hello, %(name)s": "Hallo, %(name)s",
@@ -623,6 +647,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "In Ihren eigenen Worten. Der Server macht daraus eine Regel und eine Anweisung und zeigt Ihnen die nächsten Läufe, bevor etwas gespeichert wird.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "In Ihren eigenen Worten. Der Server macht daraus eine Regel und eine Anweisung und zeigt Ihnen die nächsten Läufe, bevor etwas gespeichert wird.",
"Install LLeMbas %(version)s…": "LLeMbas %(version)s installieren…", "Install LLeMbas %(version)s…": "LLeMbas %(version)s installieren…",
"Instruction files": "Anweisungsdateien", "Instruction files": "Anweisungsdateien",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Er nimmt keine geplante Arbeit an: Schalten Sie dort Accept scheduled work ein.",
"It has not run yet.": "Er ist noch nicht gelaufen.", "It has not run yet.": "Er ist noch nicht gelaufen.",
"It says: %(purpose)s": "Es sagt: %(purpose)s", "It says: %(purpose)s": "Es sagt: %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "In dieser App auf diesem Computer gespeichert. Das Fenster öffnet sich in der gewählten Sprache neu.", "Kept in this app on this computer. The window opens again in the language chosen.": "In dieser App auf diesem Computer gespeichert. Das Fenster öffnet sich in der gewählten Sprache neu.",
@@ -694,6 +719,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "In diesem Chat gibt es nichts umzuschalten.", "Nothing to switch in this chat.": "In diesem Chat gibt es nichts umzuschalten.",
"Nothing yet.": "Noch nichts.", "Nothing yet.": "Noch nichts.",
"Notifications": "Benachrichtigungen", "Notifications": "Benachrichtigungen",
"On this server": "Auf diesem Server",
"One chat that grows": "Ein Chat, der wächst", "One chat that grows": "Ein Chat, der wächst",
"Only in its history.": "Nur in ihrem Verlauf.", "Only in its history.": "Nur in ihrem Verlauf.",
"Open in the viewer": "Im Betrachter öffnen", "Open in the viewer": "Im Betrachter öffnen",
@@ -847,6 +873,7 @@ const LEMBAS_I18N = {
"Think before answering": "Vor der Antwort nachdenken", "Think before answering": "Vor der Antwort nachdenken",
"Thinking": "Denkt nach", "Thinking": "Denkt nach",
"This computer": "Dieser Computer", "This computer": "Dieser Computer",
"This computer (%(name)s)": "Dieser Computer (%(name)s)",
"This computer is not linked yet.": "Dieser Computer ist noch nicht verknüpft.", "This computer is not linked yet.": "Dieser Computer ist noch nicht verknüpft.",
"This computer's (%(language)s)": "Wie dieser Computer (%(language)s)", "This computer's (%(language)s)": "Wie dieser Computer (%(language)s)",
"This device is not linked right now.": "Dieses Gerät ist gerade nicht verbunden.", "This device is not linked right now.": "Dieses Gerät ist gerade nicht verbunden.",
@@ -875,6 +902,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "Wartet auf ein freies Modell", "Waiting for a free model": "Wartet auf ein freies Modell",
"Waiting for subagents: {{running}} running": "Wartet auf Subagenten: {{running}} laufen", "Waiting for subagents: {{running}} running": "Wartet auf Subagenten: {{running}} laufen",
"Waiting for the browser…": "Warte auf den Browser…", "Waiting for the browser…": "Warte auf den Browser…",
"Waiting for the computer": "Wartet auf den Computer",
"Waiting for the reply before it": "Wartet auf die Antwort davor", "Waiting for the reply before it": "Wartet auf die Antwort davor",
"Waiting for you: {{what}}": "Wartet auf dich: {{what}}", "Waiting for you: {{what}}": "Wartet auf dich: {{what}}",
"Waiting for your answer": "Wartet auf Ihre Antwort", "Waiting for your answer": "Wartet auf Ihre Antwort",
@@ -885,6 +913,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Was Ihre Modelle über Sie behalten, über alle Chats hinweg. Hier können Sie alles ändern oder entfernen.", "What your models remember about you, across chats. Change or remove anything here.": "Was Ihre Modelle über Sie behalten, über alle Chats hinweg. Hier können Sie alles ändern oder entfernen.",
"When": "Wann", "When": "Wann",
"When it matters": "Wenn es zählt", "When it matters": "Wenn es zählt",
"Where it runs": "Wo es läuft",
"Wide": "Breit", "Wide": "Breit",
"Writing": "Schreibe", "Writing": "Schreibe",
"Writing down…": "Wird aufgeschrieben…", "Writing down…": "Wird aufgeschrieben…",
@@ -908,12 +937,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "alle seine Plätze sind belegt", "all its slots are in use": "alle seine Plätze sind belegt",
"allow {{tool}}?": "{{tool}} erlauben?", "allow {{tool}}?": "{{tool}} erlauben?",
"an approval": "eine Freigabe", "an approval": "eine Freigabe",
"approvals wait %(n)s min": "Freigaben warten %(n)s Min.",
"budget": "Budget", "budget": "Budget",
"busy": "belegt", "busy": "belegt",
"by you": "von dir", "by you": "von dir",
"caught up": "nachgeholt", "caught up": "nachgeholt",
"dark": "dunkel", "dark": "dunkel",
"default": "Standard", "default": "Standard",
"does not accept scheduled work": "nimmt keine geplante Arbeit an",
"done": "fertig", "done": "fertig",
"failed": "fehlgeschlagen", "failed": "fehlgeschlagen",
"findings: %(n)s": "Erkenntnisse: %(n)s", "findings: %(n)s": "Erkenntnisse: %(n)s",
@@ -926,6 +957,7 @@ const LEMBAS_I18N = {
"light": "hell", "light": "hell",
"messages: %(n)s": "Nachrichten: %(n)s", "messages: %(n)s": "Nachrichten: %(n)s",
"not linked": "nicht verbunden", "not linked": "nicht verbunden",
"not linked now": "gerade nicht verbunden",
"off": "aus", "off": "aus",
"out of context": "Kontext erschöpft", "out of context": "Kontext erschöpft",
"paused: context full": "pausiert: Kontext voll", "paused: context full": "pausiert: Kontext voll",
@@ -970,8 +1002,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "Se espera a un modelo ocupado y luego se usa el siguiente libre.", "A busy model is waited for, then the next free one is used.": "Se espera a un modelo ocupado y luego se usa el siguiente libre.",
"A chat asking for more is lowered to this.": "Un chat que pida más se limita a esto.", "A chat asking for more is lowered to this.": "Un chat que pida más se limita a esto.",
"A chat on %(server)s, with your account's models and files.": "Un chat en %(server)s, con los modelos y archivos de su cuenta.", "A chat on %(server)s, with your account's models and files.": "Un chat en %(server)s, con los modelos y archivos de su cuenta.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "Un comando que la ejecución necesita aprobar llega a tu teléfono como tarjeta. Sin respuesta para entonces, cuenta como denegado.",
"A full path, inside a folder the computer allows remote work in.": "Una ruta completa, dentro de una carpeta en la que el ordenador permite trabajo remoto.",
"A linked computer": "Un ordenador vinculado",
"A new chat for each run": "Un chat nuevo en cada ejecución", "A new chat for each run": "Un chat nuevo en cada ejecución",
"A result, but not a run with nothing to report.": "Un resultado, pero no una ejecución sin nada que informar.", "A result, but not a run with nothing to report.": "Un resultado, pero no una ejecución sin nada que informar.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "Una ejecución en un ordenador es allí un chat de agente. El ordenador debe permitirlo: «Accept scheduled work» en su LLeMbas CLI (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Una tarea programada falló 3 veces seguidas. ¿Pausarla?", "A scheduled task failed 3 times in a row. Pause it?": "Una tarea programada falló 3 veces seguidas. ¿Pausarla?",
"A scheduled task failed.": "Una tarea programada ha fallado.", "A scheduled task failed.": "Una tarea programada ha fallado.",
"A scheduled task has a result.": "Una tarea programada tiene un resultado.", "A scheduled task has a result.": "Una tarea programada tiene un resultado.",
@@ -992,6 +1028,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Siempre permitido aquí", "Always allowed here": "Siempre permitido aquí",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Un chat de agente trabaja en una carpeta de %(device)s, a través del agente LLeMbas de allí.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Un chat de agente trabaja en una carpeta de %(device)s, a través del agente LLeMbas de allí.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Un chat de agente trabaja en una carpeta de este equipo, a través del agente integrado en esta aplicación.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Un chat de agente trabaja en una carpeta de este equipo, a través del agente integrado en esta aplicación.",
"An approval waits (minutes)": "Una aprobación espera (minutos)",
"Another device": "Otro dispositivo", "Another device": "Otro dispositivo",
"Answer": "Responder", "Answer": "Responder",
"Appearance": "Apariencia", "Appearance": "Apariencia",
@@ -1002,6 +1039,7 @@ const LEMBAS_I18N = {
"Attach files": "Adjuntar archivos", "Attach files": "Adjuntar archivos",
"Auto — asks nothing": "Auto — no pregunta nada", "Auto — asks nothing": "Auto — no pregunta nada",
"Automatic compaction is off.": "La compactación automática está desactivada.", "Automatic compaction is off.": "La compactación automática está desactivada.",
"Away now: a run waits for it, then counts as missed.": "Ausente ahora: una ejecución lo espera y luego cuenta como perdida.",
"Back": "Volver", "Back": "Volver",
"Background command": "Comando en segundo plano", "Background command": "Comando en segundo plano",
"Background tasks": "Tareas en segundo plano", "Background tasks": "Tareas en segundo plano",
@@ -1026,7 +1064,7 @@ const LEMBAS_I18N = {
"Compaction buffer": "Reserva para la compactación", "Compaction buffer": "Reserva para la compactación",
"Compacts before the next reply.": "Se compacta antes de la próxima respuesta.", "Compacts before the next reply.": "Se compacta antes de la próxima respuesta.",
"Compacts by itself once the window is known.": "Se compacta sola en cuanto se conozca la ventana.", "Compacts by itself once the window is known.": "Se compacta sola en cuanto se conozca la ventana.",
"Computer": "Equipo", "Computer": "Ordenador",
"Connect": "Conectar", "Connect": "Conectar",
"Connected.": "Conectado.", "Connected.": "Conectado.",
"Connected. This shell is also open in another tab, and they share a size.": "Conectado. Este shell también está abierto en otra pestaña, y comparten tamaño.", "Connected. This shell is also open in another tab, and they share a size.": "Conectado. Este shell también está abierto en otra pestaña, y comparten tamaño.",
@@ -1068,6 +1106,7 @@ const LEMBAS_I18N = {
"Edit": "Editar", "Edit": "Editar",
"Edit %(title)s": "Editar %(title)s", "Edit %(title)s": "Editar %(title)s",
"Edit message": "Editar mensaje", "Edit message": "Editar mensaje",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit salvo que elijas otro; Auto ejecuta comandos sin preguntar. El ordenador puede rebajarlo.",
"Edit — asks before commands": "Edit — pregunta antes de los comandos", "Edit — asks before commands": "Edit — pregunta antes de los comandos",
"Empty folder": "Carpeta vacía", "Empty folder": "Carpeta vacía",
"Ended": "Terminados", "Ended": "Terminados",
@@ -1083,6 +1122,7 @@ const LEMBAS_I18N = {
"Folder": "Carpeta", "Folder": "Carpeta",
"Folder name": "Nombre de la carpeta", "Folder name": "Nombre de la carpeta",
"Folder on %(device)s": "Carpeta en %(device)s", "Folder on %(device)s": "Carpeta en %(device)s",
"Folder on the computer": "Carpeta en el ordenador",
"Free space": "Espacio libre", "Free space": "Espacio libre",
"Hello": "Hola", "Hello": "Hola",
"Hello, %(name)s": "Hola, %(name)s", "Hello, %(name)s": "Hola, %(name)s",
@@ -1091,6 +1131,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Con sus propias palabras. El servidor las convierte en una regla y una instrucción, y le muestra las próximas ejecuciones antes de guardar nada.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Con sus propias palabras. El servidor las convierte en una regla y una instrucción, y le muestra las próximas ejecuciones antes de guardar nada.",
"Install LLeMbas %(version)s…": "Instalar LLeMbas %(version)s…", "Install LLeMbas %(version)s…": "Instalar LLeMbas %(version)s…",
"Instruction files": "Archivos de instrucciones", "Instruction files": "Archivos de instrucciones",
"It does not accept scheduled work: turn on Accept scheduled work there.": "No acepta trabajo programado: active allí Accept scheduled work.",
"It has not run yet.": "Todavía no se ha ejecutado.", "It has not run yet.": "Todavía no se ha ejecutado.",
"It says: %(purpose)s": "Dice: %(purpose)s", "It says: %(purpose)s": "Dice: %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "Se guarda en esta aplicación en este equipo. La ventana se vuelve a abrir en el idioma elegido.", "Kept in this app on this computer. The window opens again in the language chosen.": "Se guarda en esta aplicación en este equipo. La ventana se vuelve a abrir en el idioma elegido.",
@@ -1162,6 +1203,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "No hay nada que activar o desactivar en este chat.", "Nothing to switch in this chat.": "No hay nada que activar o desactivar en este chat.",
"Nothing yet.": "Aún nada.", "Nothing yet.": "Aún nada.",
"Notifications": "Notificaciones", "Notifications": "Notificaciones",
"On this server": "En este servidor",
"One chat that grows": "Un chat que va creciendo", "One chat that grows": "Un chat que va creciendo",
"Only in its history.": "Solo en su historial.", "Only in its history.": "Solo en su historial.",
"Open in the viewer": "Abrir en el visor", "Open in the viewer": "Abrir en el visor",
@@ -1315,6 +1357,7 @@ const LEMBAS_I18N = {
"Think before answering": "Razonar antes de responder", "Think before answering": "Razonar antes de responder",
"Thinking": "Pensando", "Thinking": "Pensando",
"This computer": "Este equipo", "This computer": "Este equipo",
"This computer (%(name)s)": "Este ordenador (%(name)s)",
"This computer is not linked yet.": "Este equipo aún no está vinculado.", "This computer is not linked yet.": "Este equipo aún no está vinculado.",
"This computer's (%(language)s)": "La de este equipo (%(language)s)", "This computer's (%(language)s)": "La de este equipo (%(language)s)",
"This device is not linked right now.": "Este dispositivo no está vinculado en este momento.", "This device is not linked right now.": "Este dispositivo no está vinculado en este momento.",
@@ -1343,6 +1386,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "Esperando un modelo libre", "Waiting for a free model": "Esperando un modelo libre",
"Waiting for subagents: {{running}} running": "Esperando a los subagentes: {{running}} en marcha", "Waiting for subagents: {{running}} running": "Esperando a los subagentes: {{running}} en marcha",
"Waiting for the browser…": "Esperando al navegador…", "Waiting for the browser…": "Esperando al navegador…",
"Waiting for the computer": "Esperando al ordenador",
"Waiting for the reply before it": "Esperando la respuesta anterior", "Waiting for the reply before it": "Esperando la respuesta anterior",
"Waiting for you: {{what}}": "Esperándote: {{what}}", "Waiting for you: {{what}}": "Esperándote: {{what}}",
"Waiting for your answer": "Esperando su respuesta", "Waiting for your answer": "Esperando su respuesta",
@@ -1353,6 +1397,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Lo que sus modelos recuerdan de usted entre chats. Aquí puede cambiar o quitar cualquier cosa.", "What your models remember about you, across chats. Change or remove anything here.": "Lo que sus modelos recuerdan de usted entre chats. Aquí puede cambiar o quitar cualquier cosa.",
"When": "Cuándo", "When": "Cuándo",
"When it matters": "Cuando importa", "When it matters": "Cuando importa",
"Where it runs": "Dónde se ejecuta",
"Wide": "Ancha", "Wide": "Ancha",
"Writing": "Escribiendo", "Writing": "Escribiendo",
"Writing down…": "Transcribiendo…", "Writing down…": "Transcribiendo…",
@@ -1376,12 +1421,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "todas sus plazas están ocupadas", "all its slots are in use": "todas sus plazas están ocupadas",
"allow {{tool}}?": "¿permitir {{tool}}?", "allow {{tool}}?": "¿permitir {{tool}}?",
"an approval": "una aprobación", "an approval": "una aprobación",
"approvals wait %(n)s min": "las aprobaciones esperan %(n)s min",
"budget": "presupuesto", "budget": "presupuesto",
"busy": "ocupado", "busy": "ocupado",
"by you": "por ti", "by you": "por ti",
"caught up": "recuperada", "caught up": "recuperada",
"dark": "oscuro", "dark": "oscuro",
"default": "predeterminado", "default": "predeterminado",
"does not accept scheduled work": "no acepta trabajo programado",
"done": "terminado", "done": "terminado",
"failed": "falló", "failed": "falló",
"findings: %(n)s": "hallazgos: %(n)s", "findings: %(n)s": "hallazgos: %(n)s",
@@ -1394,6 +1441,7 @@ const LEMBAS_I18N = {
"light": "claro", "light": "claro",
"messages: %(n)s": "mensajes: %(n)s", "messages: %(n)s": "mensajes: %(n)s",
"not linked": "no vinculado", "not linked": "no vinculado",
"not linked now": "no vinculado ahora",
"off": "desactivado", "off": "desactivado",
"out of context": "sin contexto", "out of context": "sin contexto",
"paused: context full": "en pausa: contexto lleno", "paused: context full": "en pausa: contexto lleno",
@@ -1438,8 +1486,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "Un modèle occupé est attendu, puis le suivant libre est utilisé.", "A busy model is waited for, then the next free one is used.": "Un modèle occupé est attendu, puis le suivant libre est utilisé.",
"A chat asking for more is lowered to this.": "Une conversation qui en demande plus est ramenée à ceci.", "A chat asking for more is lowered to this.": "Une conversation qui en demande plus est ramenée à ceci.",
"A chat on %(server)s, with your account's models and files.": "Une conversation sur %(server)s, avec les modèles et les fichiers de votre compte.", "A chat on %(server)s, with your account's models and files.": "Une conversation sur %(server)s, avec les modèles et les fichiers de votre compte.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "Une commande que l’exécution doit faire approuver arrive sur votre téléphone sous forme de carte. Sans réponse d’ici là, elle compte comme refusée.",
"A full path, inside a folder the computer allows remote work in.": "Un chemin complet, dans un dossier où l’ordinateur autorise le travail à distance.",
"A linked computer": "Un ordinateur lié",
"A new chat for each run": "Une nouvelle conversation à chaque exécution", "A new chat for each run": "Une nouvelle conversation à chaque exécution",
"A result, but not a run with nothing to report.": "Un résultat, mais pas une exécution sans rien à signaler.", "A result, but not a run with nothing to report.": "Un résultat, mais pas une exécution sans rien à signaler.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "Une exécution sur un ordinateur y est un chat d’agent. L’ordinateur doit l’autoriser : « Accept scheduled work » dans son LLeMbas CLI (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Une tâche planifiée a échoué 3 fois de suite. La mettre en pause ?", "A scheduled task failed 3 times in a row. Pause it?": "Une tâche planifiée a échoué 3 fois de suite. La mettre en pause ?",
"A scheduled task failed.": "Une tâche planifiée a échoué.", "A scheduled task failed.": "Une tâche planifiée a échoué.",
"A scheduled task has a result.": "Une tâche planifiée a un résultat.", "A scheduled task has a result.": "Une tâche planifiée a un résultat.",
@@ -1460,6 +1512,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Toujours autorisé ici", "Always allowed here": "Toujours autorisé ici",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Une discussion d'agent travaille dans un dossier de %(device)s, via l'agent LLeMbas qui s'y trouve.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Une discussion d'agent travaille dans un dossier de %(device)s, via l'agent LLeMbas qui s'y trouve.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Une discussion d'agent travaille dans un dossier de cet ordinateur, via l'agent intégré à cette application.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Une discussion d'agent travaille dans un dossier de cet ordinateur, via l'agent intégré à cette application.",
"An approval waits (minutes)": "Une approbation attend (minutes)",
"Another device": "Un autre appareil", "Another device": "Un autre appareil",
"Answer": "Répondre", "Answer": "Répondre",
"Appearance": "Apparence", "Appearance": "Apparence",
@@ -1470,6 +1523,7 @@ const LEMBAS_I18N = {
"Attach files": "Joindre des fichiers", "Attach files": "Joindre des fichiers",
"Auto — asks nothing": "Auto — ne demande rien", "Auto — asks nothing": "Auto — ne demande rien",
"Automatic compaction is off.": "Le compactage automatique est désactivé.", "Automatic compaction is off.": "Le compactage automatique est désactivé.",
"Away now: a run waits for it, then counts as missed.": "Absent pour l’instant : une exécution l’attend, puis compte comme manquée.",
"Back": "Retour", "Back": "Retour",
"Background command": "Commande en arrière-plan", "Background command": "Commande en arrière-plan",
"Background tasks": "Tâches en arrière-plan", "Background tasks": "Tâches en arrière-plan",
@@ -1536,6 +1590,7 @@ const LEMBAS_I18N = {
"Edit": "Modifier", "Edit": "Modifier",
"Edit %(title)s": "Modifier %(title)s", "Edit %(title)s": "Modifier %(title)s",
"Edit message": "Modifier le message", "Edit message": "Modifier le message",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit sauf choix contraire ; Auto exécute les commandes sans demander. L’ordinateur peut l’abaisser.",
"Edit — asks before commands": "Edit — demande avant les commandes", "Edit — asks before commands": "Edit — demande avant les commandes",
"Empty folder": "Dossier vide", "Empty folder": "Dossier vide",
"Ended": "Terminés", "Ended": "Terminés",
@@ -1551,6 +1606,7 @@ const LEMBAS_I18N = {
"Folder": "Dossier", "Folder": "Dossier",
"Folder name": "Nom du dossier", "Folder name": "Nom du dossier",
"Folder on %(device)s": "Dossier sur %(device)s", "Folder on %(device)s": "Dossier sur %(device)s",
"Folder on the computer": "Dossier sur l’ordinateur",
"Free space": "Espace libre", "Free space": "Espace libre",
"Hello": "Bonjour", "Hello": "Bonjour",
"Hello, %(name)s": "Bonjour, %(name)s", "Hello, %(name)s": "Bonjour, %(name)s",
@@ -1559,6 +1615,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Avec vos propres mots. Le serveur en fait une règle et une instruction, et vous montre les prochaines exécutions avant que rien ne soit enregistré.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Avec vos propres mots. Le serveur en fait une règle et une instruction, et vous montre les prochaines exécutions avant que rien ne soit enregistré.",
"Install LLeMbas %(version)s…": "Installer LLeMbas %(version)s…", "Install LLeMbas %(version)s…": "Installer LLeMbas %(version)s…",
"Instruction files": "Fichiers d’instructions", "Instruction files": "Fichiers d’instructions",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Il n’accepte pas le travail planifié : activez-y Accept scheduled work.",
"It has not run yet.": "Elle ne s'est pas encore exécutée.", "It has not run yet.": "Elle ne s'est pas encore exécutée.",
"It says: %(purpose)s": "Il dit : %(purpose)s", "It says: %(purpose)s": "Il dit : %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "Enregistré dans cette application sur cet ordinateur. La fenêtre se rouvre dans la langue choisie.", "Kept in this app on this computer. The window opens again in the language chosen.": "Enregistré dans cette application sur cet ordinateur. La fenêtre se rouvre dans la langue choisie.",
@@ -1630,6 +1687,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "Rien à activer ou désactiver dans cette conversation.", "Nothing to switch in this chat.": "Rien à activer ou désactiver dans cette conversation.",
"Nothing yet.": "Rien pour l'instant.", "Nothing yet.": "Rien pour l'instant.",
"Notifications": "Notifications", "Notifications": "Notifications",
"On this server": "Sur ce serveur",
"One chat that grows": "Une conversation qui grandit", "One chat that grows": "Une conversation qui grandit",
"Only in its history.": "Seulement dans son historique.", "Only in its history.": "Seulement dans son historique.",
"Open in the viewer": "Ouvrir dans la visionneuse", "Open in the viewer": "Ouvrir dans la visionneuse",
@@ -1783,6 +1841,7 @@ const LEMBAS_I18N = {
"Think before answering": "Réfléchir avant de répondre", "Think before answering": "Réfléchir avant de répondre",
"Thinking": "Réflexion", "Thinking": "Réflexion",
"This computer": "Cet ordinateur", "This computer": "Cet ordinateur",
"This computer (%(name)s)": "Cet ordinateur (%(name)s)",
"This computer is not linked yet.": "Cet ordinateur n’est pas encore lié.", "This computer is not linked yet.": "Cet ordinateur n’est pas encore lié.",
"This computer's (%(language)s)": "Celle de cet ordinateur (%(language)s)", "This computer's (%(language)s)": "Celle de cet ordinateur (%(language)s)",
"This device is not linked right now.": "Cet appareil n'est pas relié pour le moment.", "This device is not linked right now.": "Cet appareil n'est pas relié pour le moment.",
@@ -1811,6 +1870,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "En attente d’un modèle libre", "Waiting for a free model": "En attente d’un modèle libre",
"Waiting for subagents: {{running}} running": "En attente des sous-agents : {{running}} en cours", "Waiting for subagents: {{running}} running": "En attente des sous-agents : {{running}} en cours",
"Waiting for the browser…": "En attente du navigateur…", "Waiting for the browser…": "En attente du navigateur…",
"Waiting for the computer": "En attente de l’ordinateur",
"Waiting for the reply before it": "En attente de la réponse précédente", "Waiting for the reply before it": "En attente de la réponse précédente",
"Waiting for you: {{what}}": "En attente de vous : {{what}}", "Waiting for you: {{what}}": "En attente de vous : {{what}}",
"Waiting for your answer": "En attente de votre réponse", "Waiting for your answer": "En attente de votre réponse",
@@ -1821,6 +1881,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Ce que vos modèles retiennent de vous, d’une conversation à l’autre. Modifiez ou supprimez ce que vous voulez ici.", "What your models remember about you, across chats. Change or remove anything here.": "Ce que vos modèles retiennent de vous, d’une conversation à l’autre. Modifiez ou supprimez ce que vous voulez ici.",
"When": "Quand", "When": "Quand",
"When it matters": "Quand c'est important", "When it matters": "Quand c'est important",
"Where it runs": "Où elle s’exécute",
"Wide": "Large", "Wide": "Large",
"Writing": "Écriture", "Writing": "Écriture",
"Writing down…": "Transcription…", "Writing down…": "Transcription…",
@@ -1844,12 +1905,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "tous ses emplacements sont occupés", "all its slots are in use": "tous ses emplacements sont occupés",
"allow {{tool}}?": "autoriser {{tool}} ?", "allow {{tool}}?": "autoriser {{tool}} ?",
"an approval": "une approbation", "an approval": "une approbation",
"approvals wait %(n)s min": "les approbations attendent %(n)s min",
"budget": "budget", "budget": "budget",
"busy": "occupé", "busy": "occupé",
"by you": "par vous", "by you": "par vous",
"caught up": "rattrapée", "caught up": "rattrapée",
"dark": "sombre", "dark": "sombre",
"default": "par défaut", "default": "par défaut",
"does not accept scheduled work": "n’accepte pas le travail planifié",
"done": "terminé", "done": "terminé",
"failed": "échoué", "failed": "échoué",
"findings: %(n)s": "constats : %(n)s", "findings: %(n)s": "constats : %(n)s",
@@ -1862,6 +1925,7 @@ const LEMBAS_I18N = {
"light": "clair", "light": "clair",
"messages: %(n)s": "messages : %(n)s", "messages: %(n)s": "messages : %(n)s",
"not linked": "non relié", "not linked": "non relié",
"not linked now": "non relié pour l’instant",
"off": "désactivé", "off": "désactivé",
"out of context": "contexte épuisé", "out of context": "contexte épuisé",
"paused: context full": "en pause : contexte plein", "paused: context full": "en pause : contexte plein",
@@ -1906,8 +1970,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "A foglalt modellre vár, majd a következő szabadot használja.", "A busy model is waited for, then the next free one is used.": "A foglalt modellre vár, majd a következő szabadot használja.",
"A chat asking for more is lowered to this.": "Az ennél többet kérő csevegés erre korlátozódik.", "A chat asking for more is lowered to this.": "Az ennél többet kérő csevegés erre korlátozódik.",
"A chat on %(server)s, with your account's models and files.": "Beszélgetés itt: %(server)s, a fiókja modelljeivel és fájljaival.", "A chat on %(server)s, with your account's models and files.": "Beszélgetés itt: %(server)s, a fiókja modelljeivel és fájljaival.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "A futás által jóváhagyást igénylő parancs kártyaként érkezik a telefonjára. Ha addig nem válaszol, elutasítottnak számít.",
"A full path, inside a folder the computer allows remote work in.": "Teljes elérési út, olyan mappán belül, ahol a számítógép engedi a távoli munkát.",
"A linked computer": "Egy összekapcsolt számítógép",
"A new chat for each run": "Minden futáshoz új beszélgetés", "A new chat for each run": "Minden futáshoz új beszélgetés",
"A result, but not a run with nothing to report.": "Eredmény, de nem olyan futás, amelynek nincs mit jelentenie.", "A result, but not a run with nothing to report.": "Eredmény, de nem olyan futás, amelynek nincs mit jelentenie.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "A számítógépen futás ott egy ügynök-csevegés. A számítógépnek engedélyeznie kell: „Accept scheduled work” a LLeMbas CLI-jében (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Egy ütemezett feladat 3-szor egymás után sikertelen volt. Szünetelteti?", "A scheduled task failed 3 times in a row. Pause it?": "Egy ütemezett feladat 3-szor egymás után sikertelen volt. Szünetelteti?",
"A scheduled task failed.": "Egy ütemezett feladat sikertelen volt.", "A scheduled task failed.": "Egy ütemezett feladat sikertelen volt.",
"A scheduled task has a result.": "Egy ütemezett feladatnak eredménye van.", "A scheduled task has a result.": "Egy ütemezett feladatnak eredménye van.",
@@ -1928,6 +1996,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Itt mindig engedélyezett", "Always allowed here": "Itt mindig engedélyezett",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Az ügynökcsevegés egy mappában dolgozik ezen: %(device)s, az ottani LLeMbas-ügynökön keresztül.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Az ügynökcsevegés egy mappában dolgozik ezen: %(device)s, az ottani LLeMbas-ügynökön keresztül.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Az ügynökcsevegés egy mappában dolgozik ezen a számítógépen, az alkalmazásba épített ügynökön keresztül.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Az ügynökcsevegés egy mappában dolgozik ezen a számítógépen, az alkalmazásba épített ügynökön keresztül.",
"An approval waits (minutes)": "Egy jóváhagyás vár (perc)",
"Another device": "Másik eszköz", "Another device": "Másik eszköz",
"Answer": "Válasz", "Answer": "Válasz",
"Appearance": "Megjelenés", "Appearance": "Megjelenés",
@@ -1938,6 +2007,7 @@ const LEMBAS_I18N = {
"Attach files": "Fájlok csatolása", "Attach files": "Fájlok csatolása",
"Auto — asks nothing": "Auto — semmit nem kérdez", "Auto — asks nothing": "Auto — semmit nem kérdez",
"Automatic compaction is off.": "Az automatikus tömörítés ki van kapcsolva.", "Automatic compaction is off.": "Az automatikus tömörítés ki van kapcsolva.",
"Away now: a run waits for it, then counts as missed.": "Most nem elérhető: a futás megvárja, aztán kihagyottnak számít.",
"Back": "Vissza", "Back": "Vissza",
"Background command": "Háttérparancs", "Background command": "Háttérparancs",
"Background tasks": "Háttérfeladatok", "Background tasks": "Háttérfeladatok",
@@ -2004,6 +2074,7 @@ const LEMBAS_I18N = {
"Edit": "Szerkesztés", "Edit": "Szerkesztés",
"Edit %(title)s": "%(title)s szerkesztése", "Edit %(title)s": "%(title)s szerkesztése",
"Edit message": "Üzenet szerkesztése", "Edit message": "Üzenet szerkesztése",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit, hacsak mást nem választ; az Auto kérdezés nélkül futtat parancsokat. A számítógép csökkentheti.",
"Edit — asks before commands": "Edit — parancsok előtt kérdez", "Edit — asks before commands": "Edit — parancsok előtt kérdez",
"Empty folder": "Üres mappa", "Empty folder": "Üres mappa",
"Ended": "Befejezett", "Ended": "Befejezett",
@@ -2019,6 +2090,7 @@ const LEMBAS_I18N = {
"Folder": "Mappa", "Folder": "Mappa",
"Folder name": "Mappa neve", "Folder name": "Mappa neve",
"Folder on %(device)s": "Mappa ezen: %(device)s", "Folder on %(device)s": "Mappa ezen: %(device)s",
"Folder on the computer": "Mappa a számítógépen",
"Free space": "Szabad hely", "Free space": "Szabad hely",
"Hello": "Üdv", "Hello": "Üdv",
"Hello, %(name)s": "Üdv, %(name)s", "Hello, %(name)s": "Üdv, %(name)s",
@@ -2027,6 +2099,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "A saját szavaival. A szerver szabályt és utasítást készít belőlük, és mentés előtt megmutatja a következő futásokat.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "A saját szavaival. A szerver szabályt és utasítást készít belőlük, és mentés előtt megmutatja a következő futásokat.",
"Install LLeMbas %(version)s…": "LLeMbas %(version)s telepítése…", "Install LLeMbas %(version)s…": "LLeMbas %(version)s telepítése…",
"Instruction files": "Utasításfájlok", "Instruction files": "Utasításfájlok",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Nem fogad ütemezett munkát: kapcsolja be ott az Accept scheduled work beállítást.",
"It has not run yet.": "Még nem futott.", "It has not run yet.": "Még nem futott.",
"It says: %(purpose)s": "Ezt mondja: %(purpose)s", "It says: %(purpose)s": "Ezt mondja: %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "Ebben az alkalmazásban, ezen a számítógépen tárolva. Az ablak a választott nyelven nyílik meg újra.", "Kept in this app on this computer. The window opens again in the language chosen.": "Ebben az alkalmazásban, ezen a számítógépen tárolva. Az ablak a választott nyelven nyílik meg újra.",
@@ -2098,6 +2171,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "Ebben a beszélgetésben nincs mit átkapcsolni.", "Nothing to switch in this chat.": "Ebben a beszélgetésben nincs mit átkapcsolni.",
"Nothing yet.": "Még semmi.", "Nothing yet.": "Még semmi.",
"Notifications": "Értesítések", "Notifications": "Értesítések",
"On this server": "Ezen a szerveren",
"One chat that grows": "Egy beszélgetés, amely bővül", "One chat that grows": "Egy beszélgetés, amely bővül",
"Only in its history.": "Csak az előzményeiben.", "Only in its history.": "Csak az előzményeiben.",
"Open in the viewer": "Megnyitás a megjelenítőben", "Open in the viewer": "Megnyitás a megjelenítőben",
@@ -2251,6 +2325,7 @@ const LEMBAS_I18N = {
"Think before answering": "Gondolkodjon válasz előtt", "Think before answering": "Gondolkodjon válasz előtt",
"Thinking": "Gondolkodás", "Thinking": "Gondolkodás",
"This computer": "Ez a számítógép", "This computer": "Ez a számítógép",
"This computer (%(name)s)": "Ez a számítógép (%(name)s)",
"This computer is not linked yet.": "Ez a számítógép még nincs összekapcsolva.", "This computer is not linked yet.": "Ez a számítógép még nincs összekapcsolva.",
"This computer's (%(language)s)": "A számítógépé (%(language)s)", "This computer's (%(language)s)": "A számítógépé (%(language)s)",
"This device is not linked right now.": "Ez az eszköz jelenleg nincs összekapcsolva.", "This device is not linked right now.": "Ez az eszköz jelenleg nincs összekapcsolva.",
@@ -2279,6 +2354,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "Szabad modellre vár", "Waiting for a free model": "Szabad modellre vár",
"Waiting for subagents: {{running}} running": "Az alügynökökre vár: {{running}} dolgozik", "Waiting for subagents: {{running}} running": "Az alügynökökre vár: {{running}} dolgozik",
"Waiting for the browser…": "Várakozás a böngészőre…", "Waiting for the browser…": "Várakozás a böngészőre…",
"Waiting for the computer": "A számítógépre vár",
"Waiting for the reply before it": "Az előző válaszra vár", "Waiting for the reply before it": "Az előző válaszra vár",
"Waiting for you: {{what}}": "Rád vár: {{what}}", "Waiting for you: {{what}}": "Rád vár: {{what}}",
"Waiting for your answer": "Az Ön válaszára vár", "Waiting for your answer": "Az Ön válaszára vár",
@@ -2289,6 +2365,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Amit a modelljei megjegyeznek Önről a beszélgetéseken át. Itt bármit módosíthat vagy eltávolíthat.", "What your models remember about you, across chats. Change or remove anything here.": "Amit a modelljei megjegyeznek Önről a beszélgetéseken át. Itt bármit módosíthat vagy eltávolíthat.",
"When": "Mikor", "When": "Mikor",
"When it matters": "Ha számít", "When it matters": "Ha számít",
"Where it runs": "Hol fut",
"Wide": "Széles", "Wide": "Széles",
"Writing": "Írás", "Writing": "Írás",
"Writing down…": "Leírás…", "Writing down…": "Leírás…",
@@ -2312,12 +2389,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "minden helye foglalt", "all its slots are in use": "minden helye foglalt",
"allow {{tool}}?": "engedélyezed ezt: {{tool}}?", "allow {{tool}}?": "engedélyezed ezt: {{tool}}?",
"an approval": "egy jóváhagyás", "an approval": "egy jóváhagyás",
"approvals wait %(n)s min": "a jóváhagyások %(n)s percig várnak",
"budget": "keret", "budget": "keret",
"busy": "foglalt", "busy": "foglalt",
"by you": "általad", "by you": "általad",
"caught up": "pótolva", "caught up": "pótolva",
"dark": "sötét", "dark": "sötét",
"default": "alapértelmezett", "default": "alapértelmezett",
"does not accept scheduled work": "nem fogad ütemezett munkát",
"done": "kész", "done": "kész",
"failed": "sikertelen", "failed": "sikertelen",
"findings: %(n)s": "megállapítások: %(n)s", "findings: %(n)s": "megállapítások: %(n)s",
@@ -2330,6 +2409,7 @@ const LEMBAS_I18N = {
"light": "világos", "light": "világos",
"messages: %(n)s": "üzenetek: %(n)s", "messages: %(n)s": "üzenetek: %(n)s",
"not linked": "nincs összekapcsolva", "not linked": "nincs összekapcsolva",
"not linked now": "most nincs összekapcsolva",
"off": "ki", "off": "ki",
"out of context": "elfogyott a kontextus", "out of context": "elfogyott a kontextus",
"paused: context full": "szüneteltetve: tele a kontextus", "paused: context full": "szüneteltetve: tele a kontextus",
@@ -2374,8 +2454,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "Si attende un modello occupato, poi si usa il successivo libero.", "A busy model is waited for, then the next free one is used.": "Si attende un modello occupato, poi si usa il successivo libero.",
"A chat asking for more is lowered to this.": "Una chat che chiede di più viene limitata a questo.", "A chat asking for more is lowered to this.": "Una chat che chiede di più viene limitata a questo.",
"A chat on %(server)s, with your account's models and files.": "Una chat su %(server)s, con i modelli e i file del tuo account.", "A chat on %(server)s, with your account's models and files.": "Una chat su %(server)s, con i modelli e i file del tuo account.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "Un comando che l'esecuzione deve far approvare arriva al tuo telefono come scheda. Senza risposta entro allora, conta come negato.",
"A full path, inside a folder the computer allows remote work in.": "Un percorso completo, dentro una cartella in cui il computer consente il lavoro remoto.",
"A linked computer": "Un computer collegato",
"A new chat for each run": "Una nuova chat per ogni esecuzione", "A new chat for each run": "Una nuova chat per ogni esecuzione",
"A result, but not a run with nothing to report.": "Un risultato, ma non un’esecuzione senza nulla da segnalare.", "A result, but not a run with nothing to report.": "Un risultato, ma non un’esecuzione senza nulla da segnalare.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "Un'esecuzione su un computer è lì una chat agente. Il computer deve consentirlo: «Accept scheduled work» nel suo LLeMbas CLI (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Un'attività pianificata è fallita 3 volte di fila. Metterla in pausa?", "A scheduled task failed 3 times in a row. Pause it?": "Un'attività pianificata è fallita 3 volte di fila. Metterla in pausa?",
"A scheduled task failed.": "Un'attività pianificata è fallita.", "A scheduled task failed.": "Un'attività pianificata è fallita.",
"A scheduled task has a result.": "Un’attività pianificata ha un risultato.", "A scheduled task has a result.": "Un’attività pianificata ha un risultato.",
@@ -2396,6 +2480,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Sempre consentito qui", "Always allowed here": "Sempre consentito qui",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Una chat con agente lavora in una cartella su %(device)s, tramite l’agente LLeMbas che vi si trova.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Una chat con agente lavora in una cartella su %(device)s, tramite l’agente LLeMbas che vi si trova.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Una chat con agente lavora in una cartella di questo computer, tramite l'agente integrato in questa app.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Una chat con agente lavora in una cartella di questo computer, tramite l'agente integrato in questa app.",
"An approval waits (minutes)": "Un'approvazione attende (minuti)",
"Another device": "Un altro dispositivo", "Another device": "Un altro dispositivo",
"Answer": "Rispondi", "Answer": "Rispondi",
"Appearance": "Aspetto", "Appearance": "Aspetto",
@@ -2406,6 +2491,7 @@ const LEMBAS_I18N = {
"Attach files": "Allegare file", "Attach files": "Allegare file",
"Auto — asks nothing": "Auto — non chiede nulla", "Auto — asks nothing": "Auto — non chiede nulla",
"Automatic compaction is off.": "La compattazione automatica è disattivata.", "Automatic compaction is off.": "La compattazione automatica è disattivata.",
"Away now: a run waits for it, then counts as missed.": "Assente ora: un’esecuzione lo aspetta, poi conta come persa.",
"Back": "Indietro", "Back": "Indietro",
"Background command": "Comando in background", "Background command": "Comando in background",
"Background tasks": "Attività in background", "Background tasks": "Attività in background",
@@ -2472,6 +2558,7 @@ const LEMBAS_I18N = {
"Edit": "Modifica", "Edit": "Modifica",
"Edit %(title)s": "Modifica %(title)s", "Edit %(title)s": "Modifica %(title)s",
"Edit message": "Modifica messaggio", "Edit message": "Modifica messaggio",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit, salvo diversa scelta; Auto esegue i comandi senza chiedere. Il computer può abbassarla.",
"Edit — asks before commands": "Edit — chiede prima dei comandi", "Edit — asks before commands": "Edit — chiede prima dei comandi",
"Empty folder": "Cartella vuota", "Empty folder": "Cartella vuota",
"Ended": "Terminati", "Ended": "Terminati",
@@ -2487,6 +2574,7 @@ const LEMBAS_I18N = {
"Folder": "Cartella", "Folder": "Cartella",
"Folder name": "Nome della cartella", "Folder name": "Nome della cartella",
"Folder on %(device)s": "Cartella su %(device)s", "Folder on %(device)s": "Cartella su %(device)s",
"Folder on the computer": "Cartella sul computer",
"Free space": "Spazio libero", "Free space": "Spazio libero",
"Hello": "Ciao", "Hello": "Ciao",
"Hello, %(name)s": "Ciao, %(name)s", "Hello, %(name)s": "Ciao, %(name)s",
@@ -2495,6 +2583,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Con parole tue. Il server ne ricava una regola e un’istruzione e ti mostra le prossime esecuzioni prima di salvare.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Con parole tue. Il server ne ricava una regola e un’istruzione e ti mostra le prossime esecuzioni prima di salvare.",
"Install LLeMbas %(version)s…": "Installa LLeMbas %(version)s…", "Install LLeMbas %(version)s…": "Installa LLeMbas %(version)s…",
"Instruction files": "File di istruzioni", "Instruction files": "File di istruzioni",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Non accetta lavoro pianificato: attiva lì Accept scheduled work.",
"It has not run yet.": "Non è ancora stata eseguita.", "It has not run yet.": "Non è ancora stata eseguita.",
"It says: %(purpose)s": "Dice: %(purpose)s", "It says: %(purpose)s": "Dice: %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "Salvato in questa app su questo computer. La finestra si riapre nella lingua scelta.", "Kept in this app on this computer. The window opens again in the language chosen.": "Salvato in questa app su questo computer. La finestra si riapre nella lingua scelta.",
@@ -2566,6 +2655,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "Non c’è niente da attivare o disattivare in questa chat.", "Nothing to switch in this chat.": "Non c’è niente da attivare o disattivare in questa chat.",
"Nothing yet.": "Ancora niente.", "Nothing yet.": "Ancora niente.",
"Notifications": "Notifiche", "Notifications": "Notifiche",
"On this server": "Su questo server",
"One chat that grows": "Una chat che cresce", "One chat that grows": "Una chat che cresce",
"Only in its history.": "Solo nella sua cronologia.", "Only in its history.": "Solo nella sua cronologia.",
"Open in the viewer": "Apri nel visualizzatore", "Open in the viewer": "Apri nel visualizzatore",
@@ -2719,6 +2809,7 @@ const LEMBAS_I18N = {
"Think before answering": "Ragiona prima di rispondere", "Think before answering": "Ragiona prima di rispondere",
"Thinking": "Ragionamento", "Thinking": "Ragionamento",
"This computer": "Questo computer", "This computer": "Questo computer",
"This computer (%(name)s)": "Questo computer (%(name)s)",
"This computer is not linked yet.": "Questo computer non è ancora collegato.", "This computer is not linked yet.": "Questo computer non è ancora collegato.",
"This computer's (%(language)s)": "Quella di questo computer (%(language)s)", "This computer's (%(language)s)": "Quella di questo computer (%(language)s)",
"This device is not linked right now.": "Questo dispositivo non è collegato in questo momento.", "This device is not linked right now.": "Questo dispositivo non è collegato in questo momento.",
@@ -2747,6 +2838,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "In attesa di un modello libero", "Waiting for a free model": "In attesa di un modello libero",
"Waiting for subagents: {{running}} running": "In attesa dei subagenti: {{running}} al lavoro", "Waiting for subagents: {{running}} running": "In attesa dei subagenti: {{running}} al lavoro",
"Waiting for the browser…": "In attesa del browser…", "Waiting for the browser…": "In attesa del browser…",
"Waiting for the computer": "In attesa del computer",
"Waiting for the reply before it": "In attesa della risposta precedente", "Waiting for the reply before it": "In attesa della risposta precedente",
"Waiting for you: {{what}}": "In attesa di te: {{what}}", "Waiting for you: {{what}}": "In attesa di te: {{what}}",
"Waiting for your answer": "In attesa della sua risposta", "Waiting for your answer": "In attesa della sua risposta",
@@ -2757,6 +2849,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Ciò che i tuoi modelli ricordano di te tra una chat e l’altra. Qui puoi cambiare o rimuovere qualsiasi cosa.", "What your models remember about you, across chats. Change or remove anything here.": "Ciò che i tuoi modelli ricordano di te tra una chat e l’altra. Qui puoi cambiare o rimuovere qualsiasi cosa.",
"When": "Quando", "When": "Quando",
"When it matters": "Quando conta", "When it matters": "Quando conta",
"Where it runs": "Dove viene eseguito",
"Wide": "Larga", "Wide": "Larga",
"Writing": "Scrittura", "Writing": "Scrittura",
"Writing down…": "Trascrizione…", "Writing down…": "Trascrizione…",
@@ -2780,12 +2873,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "tutti i suoi posti sono occupati", "all its slots are in use": "tutti i suoi posti sono occupati",
"allow {{tool}}?": "consentire {{tool}}?", "allow {{tool}}?": "consentire {{tool}}?",
"an approval": "un’approvazione", "an approval": "un’approvazione",
"approvals wait %(n)s min": "le approvazioni attendono %(n)s min",
"budget": "budget", "budget": "budget",
"busy": "occupato", "busy": "occupato",
"by you": "da te", "by you": "da te",
"caught up": "recuperata", "caught up": "recuperata",
"dark": "scuro", "dark": "scuro",
"default": "predefinito", "default": "predefinito",
"does not accept scheduled work": "non accetta lavoro pianificato",
"done": "finito", "done": "finito",
"failed": "fallito", "failed": "fallito",
"findings: %(n)s": "risultati: %(n)s", "findings: %(n)s": "risultati: %(n)s",
@@ -2798,6 +2893,7 @@ const LEMBAS_I18N = {
"light": "chiaro", "light": "chiaro",
"messages: %(n)s": "messaggi: %(n)s", "messages: %(n)s": "messaggi: %(n)s",
"not linked": "non collegato", "not linked": "non collegato",
"not linked now": "non collegato ora",
"off": "disattivato", "off": "disattivato",
"out of context": "senza contesto", "out of context": "senza contesto",
"paused: context full": "in pausa: contesto pieno", "paused: context full": "in pausa: contesto pieno",
@@ -2842,8 +2938,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "Na zajęty model się czeka, potem używany jest następny wolny.", "A busy model is waited for, then the next free one is used.": "Na zajęty model się czeka, potem używany jest następny wolny.",
"A chat asking for more is lowered to this.": "Czat, który prosi o więcej, zostaje ograniczony do tego.", "A chat asking for more is lowered to this.": "Czat, który prosi o więcej, zostaje ograniczony do tego.",
"A chat on %(server)s, with your account's models and files.": "Czat na %(server)s, z modelami i plikami Twojego konta.", "A chat on %(server)s, with your account's models and files.": "Czat na %(server)s, z modelami i plikami Twojego konta.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "Polecenie, które uruchomienie musi zatwierdzić, trafia na Twój telefon jako karta. Bez odpowiedzi do tego czasu liczy się jako odrzucone.",
"A full path, inside a folder the computer allows remote work in.": "Pełna ścieżka, w folderze, w którym komputer pozwala na pracę zdalną.",
"A linked computer": "Połączony komputer",
"A new chat for each run": "Nowy czat dla każdego uruchomienia", "A new chat for each run": "Nowy czat dla każdego uruchomienia",
"A result, but not a run with nothing to report.": "Wynik, ale nie uruchomienie bez niczego do zgłoszenia.", "A result, but not a run with nothing to report.": "Wynik, ale nie uruchomienie bez niczego do zgłoszenia.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "Uruchomienie na komputerze jest tam czatem agenta. Komputer musi na to pozwolić: „Accept scheduled work” w jego LLeMbas CLI (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Zaplanowane zadanie nie powiodło się 3 razy z rzędu. Wstrzymać je?", "A scheduled task failed 3 times in a row. Pause it?": "Zaplanowane zadanie nie powiodło się 3 razy z rzędu. Wstrzymać je?",
"A scheduled task failed.": "Zaplanowane zadanie nie powiodło się.", "A scheduled task failed.": "Zaplanowane zadanie nie powiodło się.",
"A scheduled task has a result.": "Zaplanowane zadanie ma wynik.", "A scheduled task has a result.": "Zaplanowane zadanie ma wynik.",
@@ -2864,6 +2964,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Tutaj zawsze dozwolone", "Always allowed here": "Tutaj zawsze dozwolone",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Czat z agentem pracuje w folderze na %(device)s, przez działającego tam agenta LLeMbas.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Czat z agentem pracuje w folderze na %(device)s, przez działającego tam agenta LLeMbas.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Czat z agentem pracuje w folderze na tym komputerze, przez agenta wbudowanego w tę aplikację.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Czat z agentem pracuje w folderze na tym komputerze, przez agenta wbudowanego w tę aplikację.",
"An approval waits (minutes)": "Zatwierdzenie czeka (minuty)",
"Another device": "Inne urządzenie", "Another device": "Inne urządzenie",
"Answer": "Odpowiedź", "Answer": "Odpowiedź",
"Appearance": "Wygląd", "Appearance": "Wygląd",
@@ -2874,6 +2975,7 @@ const LEMBAS_I18N = {
"Attach files": "Załączaj pliki", "Attach files": "Załączaj pliki",
"Auto — asks nothing": "Auto — o nic nie pyta", "Auto — asks nothing": "Auto — o nic nie pyta",
"Automatic compaction is off.": "Automatyczne streszczanie jest wyłączone.", "Automatic compaction is off.": "Automatyczne streszczanie jest wyłączone.",
"Away now: a run waits for it, then counts as missed.": "Teraz nieobecny: uruchomienie na niego czeka, potem liczy się jako pominięte.",
"Back": "Wstecz", "Back": "Wstecz",
"Background command": "Polecenie w tle", "Background command": "Polecenie w tle",
"Background tasks": "Zadania w tle", "Background tasks": "Zadania w tle",
@@ -2940,6 +3042,7 @@ const LEMBAS_I18N = {
"Edit": "Edytuj", "Edit": "Edytuj",
"Edit %(title)s": "Edytuj %(title)s", "Edit %(title)s": "Edytuj %(title)s",
"Edit message": "Edytuj wiadomość", "Edit message": "Edytuj wiadomość",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit, chyba że wybierzesz inaczej; Auto uruchamia polecenia bez pytania. Komputer może go obniżyć.",
"Edit — asks before commands": "Edit — pyta przed poleceniami", "Edit — asks before commands": "Edit — pyta przed poleceniami",
"Empty folder": "Pusty folder", "Empty folder": "Pusty folder",
"Ended": "Zakończone", "Ended": "Zakończone",
@@ -2955,6 +3058,7 @@ const LEMBAS_I18N = {
"Folder": "Folder", "Folder": "Folder",
"Folder name": "Nazwa folderu", "Folder name": "Nazwa folderu",
"Folder on %(device)s": "Folder na %(device)s", "Folder on %(device)s": "Folder na %(device)s",
"Folder on the computer": "Folder na komputerze",
"Free space": "Wolne miejsce", "Free space": "Wolne miejsce",
"Hello": "Cześć", "Hello": "Cześć",
"Hello, %(name)s": "Cześć, %(name)s", "Hello, %(name)s": "Cześć, %(name)s",
@@ -2963,6 +3067,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Własnymi słowami. Serwer zamieni je w regułę i polecenie i pokaże następne uruchomienia, zanim cokolwiek zostanie zapisane.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Własnymi słowami. Serwer zamieni je w regułę i polecenie i pokaże następne uruchomienia, zanim cokolwiek zostanie zapisane.",
"Install LLeMbas %(version)s…": "Zainstaluj LLeMbas %(version)s…", "Install LLeMbas %(version)s…": "Zainstaluj LLeMbas %(version)s…",
"Instruction files": "Pliki z instrukcjami", "Instruction files": "Pliki z instrukcjami",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Nie przyjmuje zaplanowanej pracy: włącz tam Accept scheduled work.",
"It has not run yet.": "Jeszcze się nie uruchomił.", "It has not run yet.": "Jeszcze się nie uruchomił.",
"It says: %(purpose)s": "Mówi: %(purpose)s", "It says: %(purpose)s": "Mówi: %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "Zapisane w tej aplikacji na tym komputerze. Okno otworzy się ponownie w wybranym języku.", "Kept in this app on this computer. The window opens again in the language chosen.": "Zapisane w tej aplikacji na tym komputerze. Okno otworzy się ponownie w wybranym języku.",
@@ -3034,6 +3139,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "W tym czacie nie ma czego przełączać.", "Nothing to switch in this chat.": "W tym czacie nie ma czego przełączać.",
"Nothing yet.": "Jeszcze nic.", "Nothing yet.": "Jeszcze nic.",
"Notifications": "Powiadomienia", "Notifications": "Powiadomienia",
"On this server": "Na tym serwerze",
"One chat that grows": "Jeden czat, który rośnie", "One chat that grows": "Jeden czat, który rośnie",
"Only in its history.": "Tylko w jego historii.", "Only in its history.": "Tylko w jego historii.",
"Open in the viewer": "Otwórz w podglądzie", "Open in the viewer": "Otwórz w podglądzie",
@@ -3187,6 +3293,7 @@ const LEMBAS_I18N = {
"Think before answering": "Rozumuj przed odpowiedzią", "Think before answering": "Rozumuj przed odpowiedzią",
"Thinking": "Rozumowanie", "Thinking": "Rozumowanie",
"This computer": "Ten komputer", "This computer": "Ten komputer",
"This computer (%(name)s)": "Ten komputer (%(name)s)",
"This computer is not linked yet.": "Ten komputer nie jest jeszcze połączony.", "This computer is not linked yet.": "Ten komputer nie jest jeszcze połączony.",
"This computer's (%(language)s)": "Jak na tym komputerze (%(language)s)", "This computer's (%(language)s)": "Jak na tym komputerze (%(language)s)",
"This device is not linked right now.": "To urządzenie nie jest teraz połączone.", "This device is not linked right now.": "To urządzenie nie jest teraz połączone.",
@@ -3215,6 +3322,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "Czeka na wolny model", "Waiting for a free model": "Czeka na wolny model",
"Waiting for subagents: {{running}} running": "Czeka na podagentów: pracuje {{running}}", "Waiting for subagents: {{running}} running": "Czeka na podagentów: pracuje {{running}}",
"Waiting for the browser…": "Czekam na przeglądarkę…", "Waiting for the browser…": "Czekam na przeglądarkę…",
"Waiting for the computer": "Czeka na komputer",
"Waiting for the reply before it": "Czeka na odpowiedź przed nią", "Waiting for the reply before it": "Czeka na odpowiedź przed nią",
"Waiting for you: {{what}}": "Czeka na ciebie: {{what}}", "Waiting for you: {{what}}": "Czeka na ciebie: {{what}}",
"Waiting for your answer": "Czeka na Twoją odpowiedź", "Waiting for your answer": "Czeka na Twoją odpowiedź",
@@ -3225,6 +3333,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Co Twoje modele pamiętają o Tobie we wszystkich czatach. Tutaj możesz wszystko zmienić lub usunąć.", "What your models remember about you, across chats. Change or remove anything here.": "Co Twoje modele pamiętają o Tobie we wszystkich czatach. Tutaj możesz wszystko zmienić lub usunąć.",
"When": "Kiedy", "When": "Kiedy",
"When it matters": "Gdy to ważne", "When it matters": "Gdy to ważne",
"Where it runs": "Gdzie działa",
"Wide": "Szeroki", "Wide": "Szeroki",
"Writing": "Pisanie", "Writing": "Pisanie",
"Writing down…": "Zapisywanie…", "Writing down…": "Zapisywanie…",
@@ -3248,12 +3357,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "wszystkie jego miejsca są zajęte", "all its slots are in use": "wszystkie jego miejsca są zajęte",
"allow {{tool}}?": "zezwolić na {{tool}}?", "allow {{tool}}?": "zezwolić na {{tool}}?",
"an approval": "zgoda", "an approval": "zgoda",
"approvals wait %(n)s min": "zatwierdzenia czekają %(n)s min",
"budget": "budżet", "budget": "budżet",
"busy": "zajęty", "busy": "zajęty",
"by you": "przez ciebie", "by you": "przez ciebie",
"caught up": "nadrobiony", "caught up": "nadrobiony",
"dark": "ciemny", "dark": "ciemny",
"default": "domyślna", "default": "domyślna",
"does not accept scheduled work": "nie przyjmuje zaplanowanej pracy",
"done": "gotowe", "done": "gotowe",
"failed": "nie powiodło się", "failed": "nie powiodło się",
"findings: %(n)s": "ustalenia: %(n)s", "findings: %(n)s": "ustalenia: %(n)s",
@@ -3266,6 +3377,7 @@ const LEMBAS_I18N = {
"light": "jasny", "light": "jasny",
"messages: %(n)s": "wiadomości: %(n)s", "messages: %(n)s": "wiadomości: %(n)s",
"not linked": "niepołączony", "not linked": "niepołączony",
"not linked now": "teraz niepołączony",
"off": "wył.", "off": "wył.",
"out of context": "bez kontekstu", "out of context": "bez kontekstu",
"paused: context full": "wstrzymany: pełny kontekst", "paused: context full": "wstrzymany: pełny kontekst",
@@ -3310,8 +3422,12 @@ const LEMBAS_I18N = {
"A busy model is waited for, then the next free one is used.": "Na zaneprázdnený model sa čaká, potom sa použije ďalší voľný.", "A busy model is waited for, then the next free one is used.": "Na zaneprázdnený model sa čaká, potom sa použije ďalší voľný.",
"A chat asking for more is lowered to this.": "Konverzácia, ktorá chce viac, je znížená na toto.", "A chat asking for more is lowered to this.": "Konverzácia, ktorá chce viac, je znížená na toto.",
"A chat on %(server)s, with your account's models and files.": "Konverzácia na %(server)s s modelmi a súbormi vášho účtu.", "A chat on %(server)s, with your account's models and files.": "Konverzácia na %(server)s s modelmi a súbormi vášho účtu.",
"A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied.": "Príkaz, ktorý spustenie potrebuje schváliť, príde do telefónu ako karta. Ak do tej doby nebude zodpovedaný, počíta sa ako zamietnutý.",
"A full path, inside a folder the computer allows remote work in.": "Úplná cesta v priečinku, v ktorom počítač povoľuje vzdialenú prácu.",
"A linked computer": "Prepojený počítač",
"A new chat for each run": "Nová konverzácia pre každé spustenie", "A new chat for each run": "Nová konverzácia pre každé spustenie",
"A result, but not a run with nothing to report.": "Výsledok, ale nie spustenie, ktoré nemá čo hlásiť.", "A result, but not a run with nothing to report.": "Výsledok, ale nie spustenie, ktoré nemá čo hlásiť.",
"A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).": "Spustenie na počítači je tam agentový chat. Počítač to musí povoliť: „Accept scheduled work“ v jeho LLeMbas CLI (lembas service scheduled on).",
"A scheduled task failed 3 times in a row. Pause it?": "Naplánovaná úloha zlyhala 3-krát za sebou. Pozastaviť ju?", "A scheduled task failed 3 times in a row. Pause it?": "Naplánovaná úloha zlyhala 3-krát za sebou. Pozastaviť ju?",
"A scheduled task failed.": "Naplánovaná úloha zlyhala.", "A scheduled task failed.": "Naplánovaná úloha zlyhala.",
"A scheduled task has a result.": "Naplánovaná úloha má výsledok.", "A scheduled task has a result.": "Naplánovaná úloha má výsledok.",
@@ -3332,6 +3448,7 @@ const LEMBAS_I18N = {
"Always allowed here": "Tu vždy povolené", "Always allowed here": "Tu vždy povolené",
"An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Agentská konverzácia pracuje v priečinku na zariadení %(device)s cez tamojšieho agenta LLeMbas.", "An agent chat works in a folder on %(device)s, through the LLeMbas agent there.": "Agentská konverzácia pracuje v priečinku na zariadení %(device)s cez tamojšieho agenta LLeMbas.",
"An agent chat works in a folder on this computer, through the agent built into this app.": "Agentská konverzácia pracuje v priečinku na tomto počítači cez agenta vstavaného v tejto aplikácii.", "An agent chat works in a folder on this computer, through the agent built into this app.": "Agentská konverzácia pracuje v priečinku na tomto počítači cez agenta vstavaného v tejto aplikácii.",
"An approval waits (minutes)": "Schválenie čaká (minúty)",
"Another device": "Iné zariadenie", "Another device": "Iné zariadenie",
"Answer": "Odpovedať", "Answer": "Odpovedať",
"Appearance": "Vzhľad", "Appearance": "Vzhľad",
@@ -3342,6 +3459,7 @@ const LEMBAS_I18N = {
"Attach files": "Prikladať súbory", "Attach files": "Prikladať súbory",
"Auto — asks nothing": "Auto — na nič sa nepýta", "Auto — asks nothing": "Auto — na nič sa nepýta",
"Automatic compaction is off.": "Automatické zhrnutie je vypnuté.", "Automatic compaction is off.": "Automatické zhrnutie je vypnuté.",
"Away now: a run waits for it, then counts as missed.": "Teraz nie je k dispozícii: spustenie naň počká, potom sa počíta ako zmeškané.",
"Back": "Späť", "Back": "Späť",
"Background command": "Príkaz na pozadí", "Background command": "Príkaz na pozadí",
"Background tasks": "Úlohy na pozadí", "Background tasks": "Úlohy na pozadí",
@@ -3408,6 +3526,7 @@ const LEMBAS_I18N = {
"Edit": "Upraviť", "Edit": "Upraviť",
"Edit %(title)s": "Upraviť %(title)s", "Edit %(title)s": "Upraviť %(title)s",
"Edit message": "Upraviť správu", "Edit message": "Upraviť správu",
"Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it.": "Edit, ak nevyberiete inak; Auto spúšťa príkazy bez pýtania. Počítač ho môže znížiť.",
"Edit — asks before commands": "Edit — pýta sa pred príkazmi", "Edit — asks before commands": "Edit — pýta sa pred príkazmi",
"Empty folder": "Prázdny priečinok", "Empty folder": "Prázdny priečinok",
"Ended": "Skončené", "Ended": "Skončené",
@@ -3423,6 +3542,7 @@ const LEMBAS_I18N = {
"Folder": "Priečinok", "Folder": "Priečinok",
"Folder name": "Názov zložky", "Folder name": "Názov zložky",
"Folder on %(device)s": "Priečinok na zariadení %(device)s", "Folder on %(device)s": "Priečinok na zariadení %(device)s",
"Folder on the computer": "Priečinok na počítači",
"Free space": "Voľné miesto", "Free space": "Voľné miesto",
"Hello": "Dobrý deň", "Hello": "Dobrý deň",
"Hello, %(name)s": "Dobrý deň, %(name)s", "Hello, %(name)s": "Dobrý deň, %(name)s",
@@ -3431,6 +3551,7 @@ const LEMBAS_I18N = {
"In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Vlastnými slovami. Server z nich vytvorí pravidlo a pokyn a pred uložením vám ukáže ďalšie spustenia.", "In your own words. The server reads them into a rule and an instruction, and shows you the next runs before anything is saved.": "Vlastnými slovami. Server z nich vytvorí pravidlo a pokyn a pred uložením vám ukáže ďalšie spustenia.",
"Install LLeMbas %(version)s…": "Nainštalovať LLeMbas %(version)s…", "Install LLeMbas %(version)s…": "Nainštalovať LLeMbas %(version)s…",
"Instruction files": "Súbory s pokynmi", "Instruction files": "Súbory s pokynmi",
"It does not accept scheduled work: turn on Accept scheduled work there.": "Neprijíma plánovanú prácu: zapnite tam Accept scheduled work.",
"It has not run yet.": "Ešte nebežal.", "It has not run yet.": "Ešte nebežal.",
"It says: %(purpose)s": "Model uvádza: %(purpose)s", "It says: %(purpose)s": "Model uvádza: %(purpose)s",
"Kept in this app on this computer. The window opens again in the language chosen.": "Uložené v tejto aplikácii na tomto počítači. Okno sa znova otvorí vo zvolenom jazyku.", "Kept in this app on this computer. The window opens again in the language chosen.": "Uložené v tejto aplikácii na tomto počítači. Okno sa znova otvorí vo zvolenom jazyku.",
@@ -3502,6 +3623,7 @@ const LEMBAS_I18N = {
"Nothing to switch in this chat.": "V tejto konverzácii nie je čo prepnúť.", "Nothing to switch in this chat.": "V tejto konverzácii nie je čo prepnúť.",
"Nothing yet.": "Zatiaľ nič.", "Nothing yet.": "Zatiaľ nič.",
"Notifications": "Upozornenia", "Notifications": "Upozornenia",
"On this server": "Na tomto serveri",
"One chat that grows": "Jedna konverzácia, ktorá rastie", "One chat that grows": "Jedna konverzácia, ktorá rastie",
"Only in its history.": "Len v jej histórii.", "Only in its history.": "Len v jej histórii.",
"Open in the viewer": "Otvoriť v prehliadači súborov", "Open in the viewer": "Otvoriť v prehliadači súborov",
@@ -3655,6 +3777,7 @@ const LEMBAS_I18N = {
"Think before answering": "Premýšľať pred odpoveďou", "Think before answering": "Premýšľať pred odpoveďou",
"Thinking": "Premýšľa", "Thinking": "Premýšľa",
"This computer": "Tento počítač", "This computer": "Tento počítač",
"This computer (%(name)s)": "Tento počítač (%(name)s)",
"This computer is not linked yet.": "Tento počítač ešte nie je prepojený.", "This computer is not linked yet.": "Tento počítač ešte nie je prepojený.",
"This computer's (%(language)s)": "Podľa tohto počítača (%(language)s)", "This computer's (%(language)s)": "Podľa tohto počítača (%(language)s)",
"This device is not linked right now.": "Toto zariadenie teraz nie je pripojené.", "This device is not linked right now.": "Toto zariadenie teraz nie je pripojené.",
@@ -3683,6 +3806,7 @@ const LEMBAS_I18N = {
"Waiting for a free model": "Čaká na voľný model", "Waiting for a free model": "Čaká na voľný model",
"Waiting for subagents: {{running}} running": "Čaká na podagentov: pracujú {{running}}", "Waiting for subagents: {{running}} running": "Čaká na podagentov: pracujú {{running}}",
"Waiting for the browser…": "Čaká sa na prehliadač…", "Waiting for the browser…": "Čaká sa na prehliadač…",
"Waiting for the computer": "Čaká na počítač",
"Waiting for the reply before it": "Čaká na odpoveď pred ňou", "Waiting for the reply before it": "Čaká na odpoveď pred ňou",
"Waiting for you: {{what}}": "Čaká na vás: {{what}}", "Waiting for you: {{what}}": "Čaká na vás: {{what}}",
"Waiting for your answer": "Čaká na vašu odpoveď", "Waiting for your answer": "Čaká na vašu odpoveď",
@@ -3693,6 +3817,7 @@ const LEMBAS_I18N = {
"What your models remember about you, across chats. Change or remove anything here.": "Čo si o vás vaše modely pamätajú naprieč konverzáciami. Čokoľvek tu môžete zmeniť alebo odstrániť.", "What your models remember about you, across chats. Change or remove anything here.": "Čo si o vás vaše modely pamätajú naprieč konverzáciami. Čokoľvek tu môžete zmeniť alebo odstrániť.",
"When": "Kedy", "When": "Kedy",
"When it matters": "Keď na tom záleží", "When it matters": "Keď na tom záleží",
"Where it runs": "Kde sa spúšťa",
"Wide": "Široký", "Wide": "Široký",
"Writing": "Píše", "Writing": "Píše",
"Writing down…": "Zapisujem…", "Writing down…": "Zapisujem…",
@@ -3716,12 +3841,14 @@ const LEMBAS_I18N = {
"all its slots are in use": "všetky jeho sloty sú obsadené", "all its slots are in use": "všetky jeho sloty sú obsadené",
"allow {{tool}}?": "povoliť {{tool}}?", "allow {{tool}}?": "povoliť {{tool}}?",
"an approval": "povolenie", "an approval": "povolenie",
"approvals wait %(n)s min": "schválenia čakajú %(n)s min",
"budget": "rozpočet", "budget": "rozpočet",
"busy": "zaneprázdnený", "busy": "zaneprázdnený",
"by you": "vami", "by you": "vami",
"caught up": "dohnané", "caught up": "dohnané",
"dark": "tmavá", "dark": "tmavá",
"default": "predvolené", "default": "predvolené",
"does not accept scheduled work": "neprijíma plánovanú prácu",
"done": "hotovo", "done": "hotovo",
"failed": "zlyhalo", "failed": "zlyhalo",
"findings: %(n)s": "zistenia: %(n)s", "findings: %(n)s": "zistenia: %(n)s",
@@ -3734,6 +3861,7 @@ const LEMBAS_I18N = {
"light": "svetlá", "light": "svetlá",
"messages: %(n)s": "správy: %(n)s", "messages: %(n)s": "správy: %(n)s",
"not linked": "neprepojené", "not linked": "neprepojené",
"not linked now": "teraz nie je prepojený",
"off": "vypnuté", "off": "vypnuté",
"out of context": "bez kontextu", "out of context": "bez kontextu",
"paused: context full": "pozastavený: plný kontext", "paused: context full": "pozastavený: plný kontext",
+1 -1
View File
@@ -320,7 +320,7 @@ async function boot() {
openFile: (path, name) => openServerFile(path, name), openFile: (path, name) => openServerFile(path, name),
openMemory: (id) => showMemoryPage(id), openMemory: (id) => showMemoryPage(id),
}) })
initScheduled({ status: () => status, models: () => models, me: () => me, openChat: (id) => showChat(id), show: () => showPage("scheduled") }) initScheduled({ status: () => status, models: () => models, me: () => me, thisDevices, openChat: (id) => showChat(id), show: () => showPage("scheduled") })
onViewer((on) => { onViewer((on) => {
$("shell").dataset.viewer = String(on) $("shell").dataset.viewer = String(on)
}) })
+103 -5
View File
@@ -27,6 +27,15 @@
// by the app (Rust, watch.rs), handed here as the // by the app (Rust, watch.rs), handed here as the
// `schedules` event // `schedules` event
// //
// GET /devices { devices: [{ id, name, host, scheduled, max_mode }] }:
// the linked computers, each saying whether it
// accepts scheduled work
//
// Where it runs (`runs_on`, server 2.0.0-beta.9): null on the server, else `{ device, device_name,
// cwd, mode, approval_wait_minutes }` -- an agent chat on that linked computer, in that folder and
// mode (never Plan). A run waiting for the computer says `waiting_for: "device"`; one it refused
// (it does not accept scheduled work) fails with the computer's own words.
//
// A server without them answers 404: the page says this server has no scheduled tasks yet. // A server without them answers 404: the page says this server has no scheduled tasks yet.
// Everything a task says (its title, instruction, a run's result or error) is the person's or a // Everything a task says (its title, instruction, a run's result or error) is the person's or a
// model's words, set as text; a result's Markdown goes through markdown.js. // model's words, set as text; a result's Markdown goes through markdown.js.
@@ -37,7 +46,7 @@ import { ask, menu, popover } from "./popup.js"
import { avatar, levelsOf, levelWord } from "./models.js" import { avatar, levelsOf, levelWord } from "./models.js"
import { markdown } from "./markdown.js" import { markdown } from "./markdown.js"
let ctx = null // { status(), models(), me(), openChat(id), show() } let ctx = null // { status(), models(), me(), thisDevices(), openChat(id), show() }
let view = { name: "list" } // { name: "list" } | { name: "task", id } | { name: "form", task? } let view = { name: "list" } // { name: "list" } | { name: "task", id } | { name: "form", task? }
let tasks = [] let tasks = []
let missing = false // the server has no scheduling routes let missing = false // the server has no scheduling routes
@@ -83,7 +92,7 @@ const RUNS_PAGE = 20
function statusChip(run, running) { function statusChip(run, running) {
if (running) return h("span", { class: "schip is-running", text: STATUS.running() }) if (running) return h("span", { class: "schip is-running", text: STATUS.running() })
if (!run) return h("span", { class: "schip", text: t("Not run yet") }) if (!run) return h("span", { class: "schip", text: t("Not run yet") })
const word = STATUS[run.status]?.() || run.status const word = run.status === "waiting" && run.waiting_for === "device" ? t("Waiting for the computer") : STATUS[run.status]?.() || run.status
// A missed run counts the slots that passed unrun; any other run says how many it followed. // A missed run counts the slots that passed unrun; any other run says how many it followed.
const n = run.status === "missed" ? (run.missed > 1 ? ` ×${run.missed}` : "") : run.missed > 0 ? ` · ${t("%(n)s missed", { n: run.missed })}` : "" const n = run.status === "missed" ? (run.missed > 1 ? ` ×${run.missed}` : "") : run.missed > 0 ? ` · ${t("%(n)s missed", { n: run.missed })}` : ""
return h("span", { class: `schip is-${run.status}`, title: `${word}${n}`, text: `${word}${n}` }) return h("span", { class: `schip is-${run.status}`, title: `${word}${n}`, text: `${word}${n}` })
@@ -326,7 +335,8 @@ async function drawTask(id) {
icon(ICONS.more), icon(ICONS.more),
), ),
) )
const models = (await schedulingModels())?.models || ctx.models() const [smodels, devices] = await Promise.all([schedulingModels(), linkedDevices()])
const models = smodels?.models || ctx.models()
const body = clear($("scheduled-body")) const body = clear($("scheduled-body"))
body.append( body.append(
h( h(
@@ -344,6 +354,7 @@ async function drawTask(id) {
fact(t("Subagents"), h("span", { text: task.agents ? t("Up to %(n)s at once", { n: task.agents }) : t("None") })), fact(t("Subagents"), h("span", { text: task.agents ? t("Up to %(n)s at once", { n: task.agents }) : t("None") })),
fact(t("Tell me"), h("span", { text: NOTIFY[task.notify]?.() || NOTIFY.matters() })), fact(t("Tell me"), h("span", { text: NOTIFY[task.notify]?.() || NOTIFY.matters() })),
fact(t("Runs"), h("span", { text: MODE[task.mode]?.() || MODE.fresh() })), fact(t("Runs"), h("span", { text: MODE[task.mode]?.() || MODE.fresh() })),
"runs_on" in task ? whereFact(task.runs_on, devices) : null,
), ),
h("div", { class: "sched__what" }, h("h2", { class: "sched__h", text: t("What it does") }), h("p", { class: "sched__instruction", text: task.instruction || task.request || "" }), task.request && task.request !== task.instruction ? h("p", { class: "sched__asked", text: t("You asked: “%(text)s”", { text: task.request }) }) : null), h("div", { class: "sched__what" }, h("h2", { class: "sched__h", text: t("What it does") }), h("p", { class: "sched__instruction", text: task.instruction || task.request || "" }), task.request && task.request !== task.instruction ? h("p", { class: "sched__asked", text: t("You asked: “%(text)s”", { text: task.request }) }) : null),
upcoming(task.next_runs || []), upcoming(task.next_runs || []),
@@ -352,6 +363,46 @@ async function drawTask(id) {
) )
} }
// --- Where it runs ------------------------------------------------------------------------------
const RUN_MODES = {
manual: () => t("Manual — asks first"),
edit: () => t("Edit — asks before commands"),
auto: () => t("Auto — asks nothing"),
}
/** The account's linked computers (`GET /devices`), or null where the server cannot say. */
async function linkedDevices() {
try {
return (await get("/devices")).devices || []
} catch {
return null
}
}
function deviceLabel(d) {
const name = d.name || d.host || d.id
return (ctx.thisDevices?.() || []).includes(d.id) ? t("This computer (%(name)s)", { name }) : name
}
/** "Where it runs": the server, or a computer and a folder, with what it is doing about it now. */
function whereFact(on, devices) {
if (!on) return fact(t("Where it runs"), h("span", { text: t("On this server") }))
const d = (devices || []).find((x) => x.id === on.device)
const name = d ? deviceLabel(d) : on.device_name || t("A linked computer")
let state = ""
if (devices && !d) state = t("Away now: a run waits for it, then counts as missed.")
else if (d && d.scheduled === false) state = t("It does not accept scheduled work: turn on Accept scheduled work there.")
const hint = [RUN_MODES[on.mode]?.() || on.mode, t("approvals wait %(n)s min", { n: on.approval_wait_minutes }), state].filter(Boolean).join(" · ")
return h(
"div",
{ class: `fact${state ? " is-warning" : ""}` },
h("span", { class: "fact__label", text: t("Where it runs") }),
h("span", { class: "fact__value" }, h("bdi", { text: name }), h("span", { class: "fact__path", title: on.cwd }, h("bdi", { text: on.cwd }))),
h("span", { class: "fact__hint", text: hint }),
)
}
function fact(label, value, hint) { function fact(label, value, hint) {
return h("div", { class: "fact" }, h("span", { class: "fact__label", text: label }), h("span", { class: "fact__value" }, value), hint ? h("span", { class: "fact__hint", text: hint }) : null) return h("div", { class: "fact" }, h("span", { class: "fact__label", text: label }), h("span", { class: "fact__value" }, value), hint ? h("span", { class: "fact__hint", text: hint }) : null)
} }
@@ -448,7 +499,7 @@ function runRow(task, run) {
h("span", { text: stamp(run.started_at || run.due_at) }), h("span", { text: stamp(run.started_at || run.due_at) }),
TIMING[run.timing] ? h("span", { class: "run__late", text: TIMING[run.timing]() }) : null, TIMING[run.timing] ? h("span", { class: "run__late", text: TIMING[run.timing]() }) : null,
), ),
h("span", { class: "run__model", title: switched }, h("span", { text: model.name || "" }), switched ? h("span", { class: "run__switched", text: t("switched") }) : null), h("span", { class: "run__model", title: switched }, h("span", { text: model.name || (task.runs_on ? task.runs_on.device_name || "" : "") }), switched ? h("span", { class: "run__switched", text: t("switched") }) : null),
open || h("span", { class: "run__error", title: note, text: note }), open || h("span", { class: "run__error", title: note, text: note }),
detail, detail,
) )
@@ -488,7 +539,10 @@ async function drawForm(task) {
const editing = !!task const editing = !!task
header(editing ? t("Edit %(title)s", { title: task.title }) : t("New scheduled task"), () => go(editing ? { name: "task", id: task.id } : { name: "list" })) header(editing ? t("Edit %(title)s", { title: task.title }) : t("New scheduled task"), () => go(editing ? { name: "task", id: task.id } : { name: "list" }))
clear($("scheduled-tools")) clear($("scheduled-tools"))
const smodels = (await schedulingModels())?.models || [] const [sm, devices] = await Promise.all([schedulingModels(), linkedDevices()])
const smodels = sm?.models || []
// Offered where the server can run a schedule on a computer: its devices say whether they accept.
const canPlace = !!devices && (devices.some((d) => "scheduled" in d) || !!task?.runs_on)
// What will be saved: the rule only from the server's reading of words (or the task's own). // What will be saved: the rule only from the server's reading of words (or the task's own).
const draft = { const draft = {
request: task?.request || "", request: task?.request || "",
@@ -501,6 +555,7 @@ async function drawForm(task) {
agents: task?.agents || null, agents: task?.agents || null,
notify: task?.notify || "matters", notify: task?.notify || "matters",
mode: task?.mode || "fresh", mode: task?.mode || "fresh",
runs_on: task?.runs_on ? { device: task.runs_on.device, cwd: task.runs_on.cwd, mode: task.runs_on.mode, approval_wait_minutes: task.runs_on.approval_wait_minutes } : null,
} }
let reading = editing ? await post("/schedules/preview", { rule: task.rule }).catch(() => null) : null let reading = editing ? await post("/schedules/preview", { rule: task.rule }).catch(() => null) : null
@@ -555,6 +610,47 @@ async function drawForm(task) {
saveBtn.disabled = !(draft.rule && Object.keys(draft.rule).length) saveBtn.disabled = !(draft.rule && Object.keys(draft.rule).length)
} }
/** Where it runs: the server, or a linked computer that accepts scheduled work, its folder and mode. */
const whereFields = () => {
const on = draft.runs_on
const listed = devices || []
const where = h(
"select",
{
id: "sched-where",
onchange: (e) => {
const id = e.target.value
if (!id) draft.runs_on = null
else {
const mine = (ctx.thisDevices?.() || []).includes(id)
const roots = ctx.status?.()?.remote?.roots || []
draft.runs_on = { device: id, cwd: draft.runs_on?.cwd || (mine ? roots[0] || "" : ""), mode: draft.runs_on?.mode || "edit", approval_wait_minutes: draft.runs_on?.approval_wait_minutes || 30 }
}
drawSettings()
settings.querySelector(draft.runs_on ? "#sched-cwd" : "#sched-where")?.focus()
},
},
h("option", { value: "", text: t("On this server"), selected: !on }),
listed.map((d) => h("option", { value: d.id, text: d.scheduled === false ? `${deviceLabel(d)} — ${t("does not accept scheduled work")}` : deviceLabel(d), disabled: d.scheduled === false && on?.device !== d.id, selected: on?.device === d.id })),
on && !listed.some((d) => d.id === on.device) ? h("option", { value: on.device, text: `${task?.runs_on?.device_name || on.device} — ${t("not linked now")}`, selected: true }) : null,
)
const out = [field(t("Where it runs"), where, on ? t("A run on a computer is an agent chat there. The computer must allow it: “Accept scheduled work” in its LLeMbas CLI (lembas service scheduled on).") : "", "sched-where")]
if (!on) return out
const cwd = h("input", { type: "text", id: "sched-cwd", value: on.cwd, placeholder: "/home/…", spellcheck: "false", oninput: (e) => (on.cwd = e.target.value.trim()) })
const mode = h(
"select",
{ id: "sched-runmode", onchange: (e) => (on.mode = e.target.value) },
Object.entries(RUN_MODES).map(([v, word]) => h("option", { value: v, text: word(), selected: on.mode === v })),
)
const wait = h("input", { type: "number", id: "sched-wait", min: "1", max: "1440", step: "1", value: String(on.approval_wait_minutes || 30), oninput: (e) => (on.approval_wait_minutes = Number(e.target.value) || 30) })
out.push(
field(t("Folder on the computer"), cwd, t("A full path, inside a folder the computer allows remote work in."), "sched-cwd"),
field(t("Mode"), mode, t("Edit unless you choose otherwise; Auto runs commands without asking. The computer may lower it."), "sched-runmode"),
field(t("An approval waits (minutes)"), wait, t("A command the run needs approved comes to your phone as a card. Unanswered by then, it counts as denied."), "sched-wait"),
)
return out
}
const drawSettings = () => { const drawSettings = () => {
const model = smodels.find((m) => m.id === draft.model) || ctx.models().find((m) => m.id === draft.model) const model = smodels.find((m) => m.id === draft.model) || ctx.models().find((m) => m.id === draft.model)
const select = (id, table, key, onChange) => const select = (id, table, key, onChange) =>
@@ -586,6 +682,7 @@ async function drawForm(task) {
Array.from({ length: MAX_AGENTS - 1 }, (_, i) => i + 2).map((n) => h("option", { value: String(n), text: t("Up to %(n)s at once", { n }), selected: draft.agents === n })), Array.from({ length: MAX_AGENTS - 1 }, (_, i) => i + 2).map((n) => h("option", { value: String(n), text: t("Up to %(n)s at once", { n }), selected: draft.agents === n })),
) )
settings.replaceChildren( settings.replaceChildren(
...(canPlace ? whereFields() : []),
field(t("Tell me"), select("sched-notify", NOTIFY, "notify", () => (settings.querySelector("#sched-notify-hint").textContent = NOTIFY_HINT[draft.notify]())), NOTIFY_HINT[draft.notify]?.() || "", "sched-notify", "sched-notify-hint"), field(t("Tell me"), select("sched-notify", NOTIFY, "notify", () => (settings.querySelector("#sched-notify-hint").textContent = NOTIFY_HINT[draft.notify]())), NOTIFY_HINT[draft.notify]?.() || "", "sched-notify", "sched-notify-hint"),
field(t("Runs"), select("sched-mode", MODE, "mode"), draft.mode === "continue" ? t("Each run sees the ones before it.") : t("Each run starts with nothing but the instruction."), "sched-mode"), field(t("Runs"), select("sched-mode", MODE, "mode"), draft.mode === "continue" ? t("Each run sees the ones before it.") : t("Each run starts with nothing but the instruction."), "sched-mode"),
field(t("Model"), modelSelect, t("A busy model is waited for, then the next free one is used."), "sched-model"), field(t("Model"), modelSelect, t("A busy model is waited for, then the next free one is used."), "sched-model"),
@@ -656,6 +753,7 @@ async function drawForm(task) {
notify: draft.notify, notify: draft.notify,
mode: draft.mode, mode: draft.mode,
} }
if (canPlace) body.runs_on = draft.runs_on ? { ...draft.runs_on } : null
try { try {
const r = editing ? await patch(`/schedules/${enc(task.id)}`, body) : await post("/schedules", body) const r = editing ? await patch(`/schedules/${enc(task.id)}`, body) : await post("/schedules", body)
go({ name: "task", id: r.schedule.id }) go({ name: "task", id: r.schedule.id })