Repository navigation
Copy: address people formally (vykání) in Launchpad, shell, CLI and agents' speech - #328
Conversation
…e redesign (#331) The page's Czech copy follows the brand rule of 2026-10-11 that the rest of the Launchpad, the shell and the CLI follow (#328): "Zapněte Tailscale a vyberte síť", "Otevřete Tailscale…", "Na ikonu Tailscale klikněte pravým tlačítkem. Nevidíte ji?…", "…nebo se vraťte do Dashboardu", the cursor's tag "Vy" and "Váš účet" in the sketch. English is unchanged. docs/decisions.md gets the F41 addendum of 2026-10-12 for #327's page: one command under a moving sketch of the detected system, no system switch, numbered steps or retry button, the way back as a link beside the rail's logo (Pablo's follow-up on #327). The tests and the browser smoke check the new words. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…vykání) The Operator's brand rule of 2026-10-11 (the brand voice of design-system-lazurio, root 5122119): Lazurio addresses the people who use it formally, lowercase vy/váš/vám, imperatives in the plural, no past tense about the person, English unchanged. The custom MCP server page was written before it and still said "ty"; #328 converts the rest of the Launchpad but does not know these strings, which are not on main. The seven Czech strings this PR adds that address the person now do so formally: "Zadejte znovu", "Doplňte klíč.", "Doplňte hodnotu.", "Některé údaje nesedí, zkontrolujte je.", "Zadejte celou adresu, …", "Zadejte celou cestu, …" and "Uložený server si typ nechává: když ho chcete změnit, server odeberte a přidejte znovu." The other strings were already neutral (labels, infinitive buttons, sentences about the server). The form model test, two code comments, docs/integrations.md and the F42 addendum quote the new words; the addendum records the rule in one sentence, as F41's does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p (F42 addendum) (#323) * Integrace: a custom MCP server is added and edited as in Codex Desktop, its keys only in Executor Apps → Integrace → Vlastní had a form of its own: two radio buttons, narrow fields, one optional header or variable and a command line split into words. "Přidat MCP server" now opens a page below the tabs with Codex Desktop's "Connect to a custom MCP": Název and Typ (STDIO | Streamable HTTP, HTTP first), then Příkaz ke spuštění, Argumenty (one row each, never split), Proměnné prostředí and Pracovní složka, or URL, Bearer token and Hlavičky; rows with a trash and a full-width "+ Přidat …", Uložit enabled only when the rules pass, plain lines under the fields. Switching the type keeps what each type has. Codex's environment variable passthrough and headers from environment variables are left out: Executor 1.6.10 passes no variable of its own to a command and resolves no header from its environment. Every variable value, the Bearer token and every header value goes only to Executor as the server's one account (its secret store): the token as `Authorization: Bearer`, each header as an input of its own of one apikey method, the variables as the command's one-shot env. Executor's config names the keys only; no static header or environment is used, which its API and its agents' getServer tool would return. Addresses are https, or plain http to this Environment only; `~` in the working directory is this account's home. A server's name opens the same page filled in (GET /api/integrations/custom/server, names only, values never sent): renamed in place (PATCH /api/integrations/<slug>, the slug stays), its config replaced (POST /api/mcp/servers/<slug>/config), its account kept while no key changes and created anew with every key once one does, since Executor never returns or patches an account's values; the page marks the stored ones "Zadej znovu". The type of a saved server stays; a catalog app's server is never edited as custom. The page and the route share one set of rules (custom-server.ts); the form is a pure model (custom-server-form.ts) the panel draws in a holder of its own, so a reading never redraws it under the person. The preview seeds a command server and a header server and answers Codex's example address. Tested against the fake Executor (routes, model, form) and, outside the suite, against the real Executor 1.6.10 program run in isolation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Docs: F42 addendum, the custom MCP server form, its mapping onto Executor 1.6.10 and its gaps The custom server form follows Codex Desktop's, field for field where Executor 1.6.10 can honour a field: the mapping of every Codex field, what is a key and where it lives, how an edit keeps keys until one changes, and the gaps (passthrough and headers from environment variables, sign-in plus headers, one key changed alone) with the alternatives rejected. docs/integrations.md gets the section Custom MCP servers (Vlastní), the routes and the Executor calls the page uses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Integrace: the custom MCP server page has no footnote; the docs say where its keys go The page carried one sentence beside Uložit, "Hodnoty proměnných, Bearer token a hlavičky jdou jen do Executoru tohoto Environmentu a už se nezobrazí." Codex's page has no such text, and the Launchpad keeps explanations out of the page and in the documentation. The sentence and its English twin go; "Uloženo" and "Zadej znovu" stay, as field states. docs/integrations.md (Custom MCP servers) now says it: every key goes only to this Environment's Executor and is never shown again, no answer, journal line or Folder file carries it, and an edited server's key fields open empty, marked "Uloženo". The F42 addendum notes that the page has no footnote of its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Integrace: a stored key's field shows only its state; the page explains nothing in text of its own Matěj's UI minimalism rule: no explanatory lines on the page. The custom MCP server page drops the line under a stored key ("Zadej znovu: Executor uloženou hodnotu nevrací.") and the note beside Save about Executor keeping a server's values together. A stored key's field now shows only its state, "Uloženo" or "Zadej znovu", and docs/integrations.md explains why changing one key asks for every stored one again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Integrace: a custom server's new address takes every stored key again, never a probe without them Review 5485707630: editing only the address of a remote server with a stored Bearer token or header left the keys unchanged in the form's eyes, so the update probed the new address without them. An address that refuses an unauthenticated request then turned a valid edit down (connect-failed) while the fields said "Uloženo" and Save was enabled. A new address is now a change of the keys for a server that has any (keysChange): every stored key's field turns to "Zadej znovu" and Save waits until each is typed again, and the account is made anew with them, as for any key change. The update route refuses a request that keeps a stored key that must come again with 400 keys-required, after reading the server and before any probe, config or account call. With every key typed again the new address is probed with them. A server without stored keys moves as before. Tests: the route refuses a URL-only change with a stored token without a probe, even where the new address refuses a probe without it (the fake probe can now require an exact Authorization), and with every key again probes with them, moves and renews the account; a server without keys moves, one that signs in signs in again. The form turns both stored keys to "Zadej znovu" with no line, keeps Save disabled until both are typed, and needs nothing for a server without keys. docs/integrations.md says it in one sentence (and lists keys-required); the F42 addendum records why. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Integrace: the custom MCP server page addresses the person formally (vykání) The Operator's brand rule of 2026-10-11 (the brand voice of design-system-lazurio, root 5122119): Lazurio addresses the people who use it formally, lowercase vy/váš/vám, imperatives in the plural, no past tense about the person, English unchanged. The custom MCP server page was written before it and still said "ty"; #328 converts the rest of the Launchpad but does not know these strings, which are not on main. The seven Czech strings this PR adds that address the person now do so formally: "Zadejte znovu", "Doplňte klíč.", "Doplňte hodnotu.", "Některé údaje nesedí, zkontrolujte je.", "Zadejte celou adresu, …", "Zadejte celou cestu, …" and "Uložený server si typ nechává: když ho chcete změnit, server odeberte a přidejte znovu." The other strings were already neutral (labels, infinitive buttons, sentences about the server). The form model test, two code comments, docs/integrations.md and the F42 addendum quote the new words; the addendum records the rule in one sentence, as F41's does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ly (vykání) Step 3's Czech copy follows the brand rule of 2026-10-11 that the rest of the Launchpad, the shell and the offline guide follow: lowercase vy, plural imperatives, no past tense about the person. "Hledejte nebo zadejte adresu", "Zavřete těžké záložky a zastavte Moduly, které nepotřebujete.", "Zadejte adresu nahoře.", "…zkuste to za chvíli znovu.", "Používejte týmové a firemní účty.", "Zavřete některé a zkuste to znovu." and, in the panel, "…otevřete ho v nové kartě, kde se můžete znovu přihlásit." (worded as in #328, so the two changes meet cleanly). The wireframe's informal address is superseded by the rule; meaning, length and tone stay. English is unchanged. The step 3 note in docs/decisions.md says so. Tests assert the new words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ly (vykání) Step 3's Czech copy follows the brand rule of 2026-10-11 that the rest of the Launchpad, the shell and the offline guide follow: lowercase vy, plural imperatives, no past tense about the person. "Hledejte nebo zadejte adresu", "Zavřete těžké záložky a zastavte Moduly, které nepotřebujete.", "Zadejte adresu nahoře.", "…zkuste to za chvíli znovu.", "Používejte týmové a firemní účty.", "Zavřete některé a zkuste to znovu." and, in the panel, "…otevřete ho v nové kartě, kde se můžete znovu přihlásit." (worded as in #328, so the two changes meet cleanly). The wireframe's informal address is superseded by the rule; meaning, length and tone stay. English is unchanged. The step 3 note in docs/decisions.md says so. Tests assert the new words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ly (vykání) Step 3's Czech copy follows the brand rule of 2026-10-11 that the rest of the Launchpad, the shell and the offline guide follow: lowercase vy, plural imperatives, no past tense about the person. "Hledejte nebo zadejte adresu", "Zavřete těžké záložky a zastavte Moduly, které nepotřebujete.", "Zadejte adresu nahoře.", "…zkuste to za chvíli znovu.", "Používejte týmové a firemní účty.", "Zavřete některé a zkuste to znovu." and, in the panel, "…otevřete ho v nové kartě, kde se můžete znovu přihlásit." (worded as in #328, so the two changes meet cleanly). The wireframe's informal address is superseded by the rule; meaning, length and tone stay. English is unchanged. The step 3 note in docs/decisions.md says so. Tests assert the new words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0ac0b54 to
f2561b8
Compare
f2561b8 to
343a89e
Compare
|
@agentrozjedemeai Rebased onto main at 343a89e: main took base-instructions-44 for the browser section, so this PR now pins base-instructions-45 (render.ts, the pinned digest, folder-tools, F28 addendum); the snapshot diff against main is only the revision header, the formalAddress rule and the four handoff lines. Anna asked to publish; please review the exact head when you can. |
|
@agentrozjedemeai Please hold this one: Anna decided on 2026-10-12 that the current goal is the Lazurio prototype only, not production. The PR stays open; do not merge it until she says otherwise. |
343a89e to
30f8b89
Compare
|
@annavesela Matěj, as Organization Admin, decided on 2026-10-14 at about 10:15Z that the full Lazurio v0.1.8 release carries this change. He approves and merges it in his name, so your hold of 2026-10-12 ends. In the DEV-6646 thread: "Dávám ti svolení review schválit mým admin jménem, ať nejsme blokovaní aničkou." I rebased your three commits onto today's
Next. Pablo reviews the exact head, Matěj's approval follows, then the merge into the rc.69 candidate. The open vault PRs (#391, #401) also pin base-instructions-48 and 49; their author renumbers them after this merge. |
agentrozjedemeai
left a comment
There was a problem hiding this comment.
Changes requested on exact head 30f8b892757403ea56c6b8790a64b9bd1b1be0a5. The formal-address changes themselves are scoped correctly: the three commits are descendants of 2727629b, revision 47→48 and its pinned digest are consistent, and both snapshot files normalize byte-for-byte to that base when only the revision, formal-address rule, and handoff wording are removed. The checks on this head are green.
Blocking integration: main advanced to 12c18a3 (#412) after this branch was based on 2727629b. GitHub reports CONFLICTING; an independent git merge-tree --write-tree --merge-base=2727629b origin/main 30f8b892 confirms a content conflict in tests/content-view.test.ts. #412 adds Personalspace bootstrap and push steps to these assertions, while this PR changes the old informal step label. Rebasing must keep BOTH the new bootstrap/push assertions and the formal Hledám váš osobní prostor wording. The current head cannot be merged and its CI does not cover the current-main integration.
Please resolve/rebase onto the current main, rerun exact-head checks and request review of the new head. Also update the PR description, which still names base-instructions-45 even though this head uses 48. No other source or snapshot drift found against the requested base.
Lazurio addresses its customers formally from now on (Operator decision of 2026-10-11; the rule lives in the brand voice of design-system-lazurio, content/brand/hlas/hlas.md, PR #78; plan DEV-6658). The Czech copy of the Launchpad was mixed: about half of its lines already used vy, the other half ty. Every Czech line the person reads in the Launchpad, the shell and the CLI errors now uses lowercase vy with plural imperatives. Lines that were already formal but put a past-tense participle on the person (which forces a gender) are rewritten about the thing instead. Impact: the Czech UI reads consistently formal. English copy, the offline page (being redesigned in #327) and texts addressed to an AI agent (Folder manual, tool catalog, recovery and install prompts, the prompts the person hands to an agent, and the agent's own CLI notes) are intentionally unchanged until the agent-text decision. Tests assert the new copy; the Folder manual snapshots are untouched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Anna's rule of 2026-10-11/12 (plan DEV-6658, brand voice in design-system-lazurio content/brand/hlas/hlas.md, PRs #78 and #80) covers Lazurio's agents too: what an agent says to a person uses vy. Rules written for agents and the prompts a person hands to an agent keep ty. - Folder manual handoff block: "Připravil jsem vám pull request", "Zkontrolujte si to v aplikaci", "Mám změny Publikovat vaším jménem?", the same text the root and Organization AGENTS.md now carry. - Generated AGENTS.md: a new rule after the Environment wording, formalAddress, says agents address people formally and agent rules keep ty. - The Bitwarden tool's purpose, which the Launchpad also shows the person, speaks about agents instead of to them. - lazurio browser: the "tab not opened" error matches the other errors converted before. - Template revision base-instructions-48 with its pinned digest; the snapshots differ only in the revision header and the lines above. F28 records the addendum. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tests/shell-identity.test.ts arrived on main after the first version of this PR and still expected the informal "jen tvůj" that the shell copy no longer says. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
30f8b89 to
c6e6200
Compare
agentrozjedemeai
left a comment
There was a problem hiding this comment.
@annavesela Approved on exact head c6e6200fd782eee163ffa398c1ef7bf0595acda4 against main 12c18a32e05e70f3e34b68451cff8737c5216150. The three Anna-authored commits are based directly on current main; the rebase preserves #411’s “Vytvořit s agentem” and #412’s Personalspace bootstrap/push assertions while formalizing “Hledám váš osobní prostor”. No unrelated changes in the 27-file diff. The Folder revision advances 47→48 with a freshly pinned digest, following the 45–47 pattern. Both snapshot files normalize byte-for-byte to main after only the revision header, formal-address rule, and four handoff-wording changes are reverted. Local isolated check: 131 targeted tests pass (42 snapshots), 0 fail; bun run check:static passes; git diff --check clean. Exact-head GitHub CI is green; review threads: 0. Matěj’s 2026-10-14 Admin direction explicitly includes Anna’s formal-address change in v0.1.8. This is review approval only, not release qualification or a merge.
immakermatty
left a comment
There was a problem hiding this comment.
Approved by Matěj (Organization Admin) on exact head c6e6200fd782eee163ffa398c1ef7bf0595acda4. His decision of 2026-10-14 ends the author's hold, and this change goes into the full v0.1.8 release. Pablo approved this head; CI is green.
Status: ready for review
Why
On 2026-10-11 and 2026-10-12 Anna (product and brand lead) decided that Lazurio, its agents and Buddy address every person formally (vykání). The rule is written down in the brand voice of design-system-lazurio,
content/brand/hlas/hlas.md(HumanAndMachine-ai/design-system-lazurio#78 and #80); this PR is the Lazurio Platform part of plan DEV-6658.The Czech copy of the Launchpad was mixed: roughly half of its lines already said vy ("Zkuste to znovu", "Vaše poznámka"), the other half ty ("Zatím tu nemáš žádné moduly", "Nejdřív připoj GitHub", "Hledám tvůj osobní prostor"). A person met both registers on one page, and the agents greeted the person with "Připravil jsem ti pull request".
What changes
Everything a person reads as addressed to them now follows the rule:
The Launchpad, the shell and CLI errors
src/launchpad/messages.ts, thecsobject: about 70 lines (tour, Apps, Nástroje, Integrace, trezor, Obsah Environmentu, Tento Environment, prohlížeč, aktualizace). The Czech lines added onmainsince the first version of this PR (custom MCP servers, SSH from devices, the browser column) were already formal; they were checked again after the rebase.src/shell/messages.ts: 4 lines ("váš přehled napříč Organizacemi", "jen váš", "tady jste", "Tady nemáte žádný Environment.").src/files/cli.ts: 4 refusals oflazurio files link;src/browser/cli.ts: 4 errors oflazurio browser("Spusťte lazurio doctor.").scripts/integrations-apps.tsand the generatedsrc/integrations/catalog.json.The offline page
"Zapněte Tailscale" with its formal copy ("Vy" on the cursor, "Váš účet") already landed on
mainin #331, with its tests and smoke; this PR adds nothing there.What agents say to people (the Lazurio Folder)
base-instructions-48(main took 44–47 in the meantime) with its pinned digest85405b07…, so every installed Folder is re-rendered with its next refresh or profile change. The snapshots differ only in the revision header and the lines above.docs/decisions.mdF28 records the addendum.Tests that assert these lines expect the new copy; no assertion was removed or loosened.
What intentionally does not change
src/folder/manual.ts,render.ts,outputs.ts), the tool catalog's tasks and usage (src/tools/catalog.ts), the recovery and install prompts (src/recover/prompt.ts,src/update/install-prompt.ts).toolsFixPrompt,appsNewModulePrompt,preparePromptBody,executorConflictPrompt,sshPromptTextinmessages.ts.lazurio browser windowanddone("Tvoje okno je otevřené", "agent-browser tvého sezení…"),lazurio files linkandlazurio chat("Předej Operátorovi…").docs/launchpad-parity.mdkeeps its historical quote of "Zkontroluj si to v aplikaci" from 2026-09-28.Verification
bun run lint: clean.bun run typecheck: clean.bun test(before the last rebase, which brought onlydocs/decisions.mdF50): 2242 pass, 7 skip, 3 fail, 1 error. Two failures weretests/shell-identity.test.ts, new onmain, still expecting "jen tvůj"; it now expects "jen váš" and passes (25/25). The third failure and the error are the known load flake Flaky under a loaded full run: install-script "a download that differs from its manifest" hits the 5 s test timeout #191 (tests/install-script.test.ts, the 5 s timeout); that file alone passes 10/10.pr-preflight: ready to push onorigin/mainb1d882f.Risks
drift), which is the existing rule, not a new one.🤖 Generated with Claude Code
Rebase of 2026-10-14
Matěj (Organization Admin) decided on 2026-10-14 that this change goes into the full v0.1.8 release, and he lifted the hold in his name. The three commits were rebased onto
main12c18a3. They keep Anna as author.base-instructions-48, as described above.appsNewModuleSub: main's new neutral label "Vytvořit s agentem" (Launchpad: the personal space's holder gets "+ Nový modul" with the prompt new-personal-module (#359) #411) stays;tests/content-view.test.ts: Content: personalspace install runs the template's own bootstrap (#377) #412's bootstrap and push steps stay, and the formal "Hledám váš osobní prostor" replaces the old label.formalAddressrule and the four handoff lines.Verification:
bun run checkon the previous head30f8b892: 3454 pass. The one failure was the known load flake Flaky under a loaded full run: module-declared-preparation "the routes' deadline covers the queue" gets an unobserved start-pending (starting) where it expects stopped #380, which passed alone.c6e6200f:check:staticpassed;