Skip to content

Words: three kinds of Environment, and your computer without a kind (F28 addendum, DEV-6612) - #497

Merged
immakermatty merged 2 commits into
mainfrom
agent/DEV-6612-three-kinds-words
Oct 18, 2026
Merged

immakermatty merged 2 commits into
mainfrom
agent/DEV-6612-three-kinds-words

Conversation

@immakermatty

@immakermatty immakermatty commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Status: ready for review

Why

On 2026-10-18 the Organization Admin decided that people see only three kinds of Environment (root decision 0207, its addendum of 2026-10-18; plan DEV-6612, after the Lazurio prototype HumanAndMachine-ai/prototypes-lazurio #65):

  • Osobní, Pracovní and Týmové Prostředí, in English Personal, Work and Team Environment.
  • An automated Environment is no fourth kind: to people it is a work Environment with automations set up.
  • The person's own computer has no kind: it is váš počítač, "your computer".
  • A text about a specific Environment names its kind ("toto Pracovní Prostředí") instead of a bare "Prostředí".

Today the shell and the Launchpad still say "Automatizované", "Místní", "Tento počítač", "Lokální pracovní stanice", "Pracovní týmové", "Personal Remote Environment" and a bare "toto Prostředí" in about a hundred sentences per language.

What changes

  • One helper, src/shell/kind-name.ts. A port of the prototype's kindName, kindShort and kindDetail, with English added:
    • every kind in the six Czech cases, bare, after "toto" or after "vaše" ("tomto Týmovém Prostředí", "vašeho Osobního Prostředí"; "tento počítač");
    • English ("this Team Environment", "your computer");
    • kindDetail for a choice that must tell an automated Environment apart: "Pracovní Prostředí s automatizacemi" / "Work Environment with automations".
  • Shell words (the picker, the column head):
    • the line beside a name: Osobní, Pracovní or Týmové; an automated Environment says Pracovní; a computer says "Váš počítač", never "Místní";
    • the gear: "Nastavení Týmového Prostředí", on a computer "Nastavení vašeho počítače" (English "Team Environment Settings", "Settings of your computer");
    • a missing app, the switch's name and a public Environment's notice name the kind: "Chat v tomto Pracovním Prostředí neběží", "Chat na tomto počítači neběží".
  • Launchpad words:
    • Obecné's preset choice: Váš počítač, Osobní, Pracovní, Týmové Prostředí and Pracovní Prostředí s automatizacemi (its field is a little wider so the longest one is whole);
    • Settings → Toto Prostředí is named by its kind in the navigation, the heading and the document title: "Toto Týmové Prostředí", on a computer "Tento počítač"; its "Druh" says the same, and an unknown preset says plain "Prostředí", never a wrong kind;
    • every sentence about this Environment: the catalog writes it as a token ({tomto}, {tohoto}, {Toto}, {v tomto}, {this}, {in this} …, the prototype's own tokens for its explainers), and messages(locale, kind) fills them once per language and kind. The page takes the kind from this Environment's shell document; the server's first paint and prepared prompts take it from the same document or the Folder's preset. On a computer "v"/"in" become "na"/"on".
  • Docs: an F28 addendum (the decision, the helper, the tokens, what stays, alternatives, honest limits) and a short F36 addendum for the shell's words; docs/launchpad-development.md.
  • Preview: scripts/preview-launchpad.ts takes team or automated after its mode, so a Team and an Automated Environment can be seen in the browser.

For the T3 Code rebuild thread: the column head it draws takes these words from shell.js as they are (the kind line, the gear's label, a missing app's title). Nothing of lazurio.shell.v1 or interface v1 changes, and the column head's layout and "Dokončit nastavení" are untouched.

What stays

  • lazurio.shell.v1 and its kinds (automated, workstation), preset names, message keys, routes and every click.
  • The technical facts under "Pro podporu" (e.g. hosted-organization-steward).
  • The CLI, Nová karta, the Environment browser's words, and the Folder's generated agent rules and manual (the root addendum keeps the technical term "Automated Environment" for agents).
  • Names of things keep theirs: Prohlížeč Prostředí, Trezor Prostředí in Začínáme, Obsah Prostředí, Prohlídka Prostředí.
  • Two texts keep the plain "toto Prostředí" on purpose, because they talk about the kind itself: Obecné's hint "Druh tohoto Prostředí." and a sign-in's refusal that the kind could not be read.

Verification

  • bun run check:static (lint, typecheck, public-input guard, proof build and smoke): clean.
  • bun test, the whole suite locally on a heavily loaded machine: 3958 pass, 9 skip, 9 fail. Eight failures were 5-second timeouts or their follow-on errors in process-heavy tests (module-declared-preparation, legacy-paths, organization-module-create, recover, organization-settings-surfaces, install-script); one was a wording expectation in module-view, fixed on this branch. Each of those files then passed on its own (6, 4, 18, 17, 6, 10 and 7 tests). CI runs the whole suite on both runners.
  • New and extended tests:
    • tests/kind-name.test.ts: every kind in every case and determiner, cs and en; tokens for every kind and for none; prepositions on a computer.
    • tests/environment-wording.test.ts: the old kinds are forbidden in Czech and English in the catalog filled for every kind and in the shell's words; a catalog filled for a kind has no plain "toto Prostředí"/"this Environment" outside the two texts above, and no token is ever left unfilled.
    • tests/shell-picker.test.ts, tests/shell.test.ts, tests/shell-identity.test.ts, tests/apps-view.test.ts: names, kind lines, gear labels and missing-app titles per kind, cs and en.
    • tests/machine-view.test.ts: the kind of each preset and of an unknown one, the assignment line.
    • tests/launchpad-routes.test.ts: Toto Prostředí's title per kind.
    • tests/vault-requests-view.test.ts, tests/module-view.test.ts, tests/first-run-shell.test.ts: the vault and prompt sentences per kind.
  • In a browser (root decision 0178), headless Chrome through playwright-core against scripts/preview-launchpad.ts, at 1440 × 900, in Czech and English, on a work, a Team, an Automated and a personal Environment and on a computer (10 runs). Each run checked the picker and its list, Obecné, and Toto Prostředí. What the page said, for example:
    • Team, cs: picker "Týmové", gear "Nastavení Týmového Prostředí", Obecné "Týmové Prostředí", heading and document title "Toto Týmové Prostředí · Nastavení — Lazurio", Druh "Týmové Prostředí".
    • Automated, cs: picker "Pracovní", Obecné and Druh "Pracovní Prostředí s automatizacemi" (whole in the field), heading "Toto Pracovní Prostředí".
    • Computer, cs: line "Váš počítač", gear "Nastavení vašeho počítače", "Chat na tomto počítači neběží", heading "Tento počítač".
    • Work, en: gear "Work Environment Settings", Obecné "Work Environment / Team Environment / Work Environment with automations", heading "This Work Environment".
    • Computer, en: line "Your computer", gear "Settings of your computer", heading "This computer".
    • The only failed requests were the preview's known absences (no account relay, no update status, no content job), the same on every run.
  • These are no rendered-page CI gates.

Risks

🤖 Generated with Claude Code

immakermatty and others added 2 commits October 18, 2026 15:30
…thout a kind

People now read only Osobní, Pracovní and Týmové Prostředí (Personal, Work
and Team Environment). An automated Environment shows as a work one, and the
person's own computer has no kind: it is "Váš počítač" / "Your computer"
(root decision 0207, addendum of 2026-10-18; plan DEV-6612).

One helper, src/shell/kind-name.ts, ports the prototype's kindName,
kindShort and kindDetail (six Czech cases, "this"/"your", plus English).
The shell's picker line, gear label ("Nastavení Týmového Prostředí"), switch
name, missing-app titles and public notice take their words from it. The
Launchpad's Obecné presets, Toto Prostředí's title and Druh, and about a
hundred sentences per language about this Environment now name its kind:
the catalog writes them with the prototype's tokens ({tomto}, {this}, ...)
and messages(locale, kind) fills them for the page's kind; without a kind
the plain words stay. lazurio.shell.v1 and every identifier are unchanged.

The wording guard now forbids the old kinds in both languages and any plain
"toto Prostředí" / "this Environment" left in a catalog filled for a kind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… without a kind

Records Matěj's decision of 2026-10-18 (root decision 0207, its addendum of
the same day) for this repository: the helper and its tokens, what changes in
the shell and the Launchpad, what stays (lazurio.shell.v1, identifiers, the
Folder's agent rules, the CLI), the alternatives, honest limits and the
verification. A short F36 addendum points the shell's words to it, and
docs/launchpad-development.md names the helper.

The Launchpad preview takes `team` or `automated` after its mode, so a Team
and an Automated Environment can be checked in a browser; the fixture's
organizationWithEntry gains the handover's assignment for that.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@immakermatty Exact-head review: APPROVED at cb03483. The Czech declensions and v/na prepositions, three displayed kinds, workstation without a kind, shell consumer and first-paint/prompt wiring agree with decision 0207 and the F28/F36 addenda. No shell.v1 fields, identifiers, preset keys or routes changed; the public diff uses synthetic fixtures and contains no observed private material. In an isolated detached checkout, bun run check:static passed and 218 focused tests across 13 affected files passed; git diff --check passed. Exact-head CI static checks and both test shards succeeded. Remaining surfaces are explicitly tracked in #498. No merge performed.

@immakermatty
immakermatty merged commit 76fae52 into main Oct 18, 2026
7 checks passed
immakermatty added a commit that referenced this pull request Oct 18, 2026
…28 addendum of 2026-10-18)

After the rebase onto #497, which makes a text about a specific
Environment name its kind: Settings → Obecné → Téma Prostředí says
"Barvy Chatu, Apps a Automate v {tomto}." ("in {this}"), so a Work
Environment reads "v tomto Pracovním Prostředí"; the Team note says
"this Team Environment" in English too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty added a commit that referenced this pull request Oct 18, 2026
…28 addendum of 2026-10-18)

After the rebase onto #497, which makes a text about a specific
Environment name its kind: Settings → Obecné → Téma Prostředí says
"Barvy Chatu, Apps a Automate v {tomto}." ("in {this}"), so a Work
Environment reads "v tomto Pracovním Prostředí"; the Team note says
"this Team Environment" in English too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty added a commit that referenced this pull request Oct 18, 2026
…mputer reads "on this computer"

Pablo's review of 490fc1f found that "v {tomto}" and "in {this}" read
"v tomto počítači" and "in this computer" on a workstation. #497 has
tokens that carry their preposition for that: {v tomto} is "v tomto
Pracovním Prostředí" but "na tomto počítači", {in this} "in this Team
Environment" but "on this computer". The note now uses them.

Test: the note for a workstation (cs, en), a Work and a Team Environment
and an unknown kind (it fails with the earlier "v {tomto}").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty added a commit that referenced this pull request Oct 18, 2026
…wed by Chat, Apps and Automate (root 0208, F36 addendum) (#493)

* Theme: vendor T3 Code's built-in palettes from Lazurio/t3code v0.1.0-lazurio.2 (MIT)

Root decision 0208 offers T3 Code's built-in themes Grove, Ocean, Ember and
Iris as Environment themes beside Lazurio. Their palettes are copied byte for
byte from packages/shared/src/themePalettes.ts of the T3 Code fork at its
release tag v0.1.0-lazurio.2 (the file is upstream T3 Code v0.1.0's
unchanged), with T3 Code's MIT licence beside it and both hashes in
src/theme/vendor/README.md, as the shell's own vendored files are recorded.

Biome skips the vendored directory so the file stays exactly upstream's;
TypeScript still checks it. docs/licensing.md lists it among the bundled
third-party assets. T3 Chat, T3's own brand palette, is in the file but is
never offered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Shell: the Environment theme in every app's document (F36 addendum, interface v1 additive)

lazurio.shell.v1 gains an optional `theme` ({id, label, revision, light,
dark?}, every promised colour name as a literal #rrggbb), refused on a page
that belongs to no Environment. /.lazurio/shell.js declares it in the app's
document: one <style data-lazurio-environment-theme> right after the tokens it
installs (or in a host's own place), the light values on :root and, where the
theme has them, the dark values for a host that shows dark itself (class
"dark") or follows the device (data-lazurio-appearance="device"). The root is
marked data-lazurio-environment-theme and data-lazurio-theme-dark only where
the values hold; data-lazurio-theme="light" stays.

The tokens the shell installs now end with --lazurio-color-scheme: light, so
every document says the scheme of its values from the moment the script
evaluates; a theme's dark values set it to dark. As the script evaluates, the
theme this origin remembers (localStorage lazurio.shell.theme) is declared
synchronously, before the app's own module runs; the document's theme
replaces it where it differs. The elements read /.lazurio/shell.json again
when the page is shown again (visibilitychange, focus), follow another tab's
newer theme at once (storage) and announce every change as lazurio-theme.
Interface v1 grows by declares.environmentTheme, the host attribute
data-lazurio-appearance and the event; nothing is renamed or removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Theme: one record per Environment, palettes projected onto the promised names, and lazurio theme

The Environment's theme record {theme, revision, setAt} (root decision 0208
point 1) lives in the install base, <base>/theme/<Folder digest>.json, beside
the record of the Organization's settings: never in FolderPreferences or the
profile, which feed the agents' instructions, and not in the Folder's
.lazurio/, which releases before this one would refuse with an unknown entry.
Every change is compare-and-set on the revision under a per-Folder flock
shared by the CLI and the Launchpad; an unreadable record is Lazurio at
revision 0 and the next change replaces it.

The themes: Lazurio, exactly the vendored tokens' values and light only, then
Grove, Ocean, Ember and Iris, each T3 Code role projected onto the promised
name the fork's theme.css maps it to, converted to literal sRGB hex. Muted ink
takes the sidebar's muted foreground and the quiet grey T3 Code's muted
surface, so muted text holds 4.5:1 on the paper and the grey; the success
colours stay the design system's (its green-300 in dark). Contrast is tested
per theme and appearance.

lazurio theme show|set, built as lazurio chat defaults is, gives agents the
same record; set takes --expected-revision and is refused on a public
Environment, whose visitors share the one theme.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Launchpad: the theme API, shell.json's theme, Apps following it and Settings → Obecné → Téma Prostředí

GET /api/theme answers the record and every theme with its values; POST
/api/theme/set takes {theme, revision} and changes the theme only at that
revision (409 theme-changed with the current one otherwise). On a public
Environment the read answers and the change is 403 public-environment: a
guardrail of the Launchpad's own interfaces, not a security boundary.
/.lazurio/shell.json and the page's boot document always carry the theme.

The page takes its colours from the promised token names wherever the design
system's own value is the same, so Lazurio looks exactly as before and another
theme reaches its surfaces, lines, buttons and signals; under such a theme it
also sets the twelve colour roles, so the rail and the column head follow.
Apps stays light: it hands the shell the theme without its dark values, with
data-lazurio-appearance="device" for later. A hosted Launchpad serves its page
with the theme already in its head and on <html>, after the bundled tokens.

Settings → Obecné gains Téma Prostředí: a card per theme with its light and
dark miniatures, a radio group whose choice applies at once; the current theme
when it changed elsewhere meanwhile; for whoever can open Settings, a Team's
every member; withheld on a public Environment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Docs: the Environment theme, F36's addendum of 2026-10-18 (root decision 0208)

decisions.md records the addendum: the record and why it lives in the install
base, the themes and the projection table with its contrast rule, the shell
document's theme, what the shell declares and when, interface v1's additions,
the Launchpad's following and light-only Apps, Settings' group, the public
Environment's fixed theme, the CLI, the forks' parts and the release order
(the Platform before the T3 Code and MausBot forks). launchpad-development.md
describes the record, the API, the CLI, the style the shell writes and the
Settings group for the next developer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Theme: a public Environment reads the default Lazurio, whatever its record keeps (root 0208 point 6)

Pablo's review of #493 found that an Environment which chose Ocean and
later became public kept showing Ocean: only the writes were refused. Now
every read on a public Environment is the default Lazurio record:
`GET /api/theme`, `/.lazurio/shell.json`, the page's boot document and
`lazurio theme show`. One store wrapper does it (`fixedThemeReads`), on
the same `isPublicEnvironment` rule, so a theme chosen before the
Environment became public, or a record written past the Launchpad, never
reaches its visitors; the record itself is left as it is.

Tests: the transition through a started hosted Launchpad, with a record
kept in an install base before it starts, and a non-public control (it
fails without the server wiring); the wrapper itself; and `lazurio
theme show` over a kept Ocean on a public Environment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Launchpad: the theme's note names the kind of Environment it is in (F28 addendum of 2026-10-18)

After the rebase onto #497, which makes a text about a specific
Environment name its kind: Settings → Obecné → Téma Prostředí says
"Barvy Chatu, Apps a Automate v {tomto}." ("in {this}"), so a Work
Environment reads "v tomto Pracovním Prostředí"; the Team note says
"this Team Environment" in English too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Launchpad: the theme's note takes the kind's own preposition, so a computer reads "on this computer"

Pablo's review of 490fc1f found that "v {tomto}" and "in {this}" read
"v tomto počítači" and "in this computer" on a workstation. #497 has
tokens that carry their preposition for that: {v tomto} is "v tomto
Pracovním Prostředí" but "na tomto počítači", {in this} "in this Team
Environment" but "on this computer". The note now uses them.

Test: the note for a workstation (cs, en), a Work and a Team Environment
and an unknown kind (it fails with the earlier "v {tomto}").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Launchpad: a public Environment hides the theme's group in a rule of its own

Pablo's review of e15c728: #495 pins the exact selectors of the rule
that hides Integrace, Trezor, Nástroje and Začínáme's refresh on a public
Environment (tests/launchpad-apps-vault.test.ts), and this branch had
added the theme's group to it. The group now has its own rule, so the
pinned one stays exactly as #495 wrote it, and a test pins the new rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty added a commit that referenced this pull request Oct 19, 2026
… in Apps, three kinds of words, the theme

Brings #467 up to date with main (dbee5f6) after the guide F56 (#501-#503,
#509), Apps → Trezor (#495, #500), three kinds of Environment (#497), one
colour theme per Environment (#493) and the tour's gear stop (#475).

One textual conflict, in scripts/preview-launchpad.ts: main's `team` flag
for a hosted Team Environment and this branch's `workspace-tabs` flag sit
side by side; each keeps its own option. The section head keeps main's
accent colour (`--lz-accent`, #493) for its flag and rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants