Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 47 additions & 2 deletions docs/operations/lazurio-fork-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Admin (Matěj, `immakermatty`) ho jen schválí v GitHub environmentu.
Lazurio Mašiny. T3 vždy běží v kořeni vlastního hostname
(`https://t3code.<vm>.<org>.lazurio.io/`) za TLS reverse proxy. Oficiální
desktop a mobilní aplikace se připojují jako neupravení upstream klienti.
Vzhled a branding webového klienta zůstávají upstream; jediný rozhodnutý zásah
do jeho UI je načtení shellu Lazuria (viz [Lazurio shell](#lazurio-shell)).

## Kanál aktualizací

Expand Down Expand Up @@ -85,7 +87,7 @@ nabídne normálně.
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `hosted: configurable client session TTL` | `T3CODE_CLIENT_SESSION_TTL` (Machines nastavuje `365d`). | retain: upstream má pevných 30 dní |
| `hosted: serve behind an explicit HTTPS external origin` | `T3CODE_EXTERNAL_ORIGIN`: server na loopbacku za proxy je dosažitelný zvenku, používá Secure cookie `__Host-t3_session` a mutace a WebSocket upgrady autentizované cookie přijímá jen z tohoto originu. | retain: upstream ekvivalent nemá |
| `hosted: explicit environment label` | `T3CODE_ENVIRONMENT_LABEL` pojmenuje kontejnerový Workspace (například `Iotor / Management`). | retain: upstream čte jen `PRETTY_HOSTNAME` a hostname, Machines nastavují proměnnou |
| `hosted: explicit environment label` | `T3CODE_ENVIRONMENT_LABEL` pojmenuje kontejnerový Workspace (například `Acme / Management`). | retain: upstream čte jen `PRETTY_HOSTNAME` a hostname, Machines nastavují proměnnou |
| `feat: in-app update from the configured release channel` | `T3CODE_RELEASE_REPOSITORY` a server-advertised `availableServerUpdate`: Mašina nabízí aktualizaci na nejvyšší vydání z nastaveného repozitáře a instaluje ho tlačítkem Update. Navrženo upstreamu. | retain: upstream má pevné `pingdotgg/t3code` a bere první vydání kanálu |
| `release: Lazurio distribution` | Tento dokument, `Dockerfile.lazurio`, `.dockerignore`, kontraktní test a workflow `lazurio-fork-ci.yml`, `lazurio-cli-archives.yml` a `lazurio-release.yml`. | retain |

Expand All @@ -98,6 +100,49 @@ jakoukoli jinou změnu pod těmito cestami CI odmítne. Verze se razítkují jen
upstream skriptem `scripts/update-release-package-versions.ts`, do Gitu se
necommitují.

### Lazurio shell

**Rozhodnuto 2026-10-03 (rozhodnutí o shellu Lazuria), implementace čeká.**
V tabulce overlaye ani v allowlistu zatím není.

V Lazuriu je T3 Code aplikace **Chat** v přepínači Chat · Apps · Automate.
Overlay do webového klienta přidá jen načtení shellu Lazuria: rail
Environmentů, přepínač aplikací v sidebaru T3 a plovoucí bublinu Buddyho.
Shell jsou Web Components se Shadow DOM, takže CSS T3 a Lazuria se navzájem
neovlivní. Servíruje je Launchpad daného Environmentu na stejném originu, za
bránou Environmentu:

- `/.lazurio/shell.js` definuje `<lazurio-rail>`, `<lazurio-column-head>`
a `<lazurio-buddy>` ve verzi Launchpadu na tom Environmentu. Nový rail proto
nepotřebuje nové vydání forku.
- `/.lazurio/shell.json` drží data: přihlášeného člověka, Environmenty
a Organizace, adresy aplikací a barvu Organizace. Fork data Lazuria nezná
a sám nic nenačítá.

Patch bude mít zhruba 20 řádků ve zhruba třech souborech `apps/web`:
`<script type="module" src="/.lazurio/shell.js">` v `index.html`,
`<lazurio-rail>` vedle kořene aplikace, `<lazurio-column-head>` nahoře
v sidebaru místo loga upstreamu a `<lazurio-buddy>` v kořeni aplikace.
Rail je `position: fixed` u levého okraje a místo pro něj udělá odsazení,
ne posun: `#root { box-sizing: border-box; padding-left:
var(--lazurio-rail-width, 0px); }`. `#root` má v upstreamu `width: 100%`
a `body` `overflow: hidden`, takže `margin-left` by pravý okraj aplikace
uřízl; s `border-box` se šířka obsahu zmenší o rail. Každý změněný soubor
přibude do `allowed_upstream_changes` jako vlastní řádek s přesnou cestou
(například `apps/web/index.html`, `apps/web/src/index.css` a soubor sidebaru),
pod jedním komentářem s důvodem na začátku bloku. Kontrola ve forku bude
hlídat, že slot (skript a `<lazurio-column-head>`) existuje.
Při přestavbě na nový upstream tag se pak konflikt ukáže jen v těchto řádcích.
Přepínač i rail vedou obyčejnými odkazy na jiné originy Environmentu
(`launchpad.…`, `mausbot.…`), takže router T3 se nemění.

Vzhled a branding zůstávají upstream až do stabilních vydání upstreamu: T3
Code nepřebarvujeme ani nepřejmenováváme a dál o něm mluvíme jako o T3 Code.
Mimo Lazurio se nic nevykreslí: bez `/.lazurio/shell.js` (samostatný server,
vývoj upstreamu) zůstanou elementy nedefinované, šířka railu je 0 a klient se
chová jako upstream. Oficiální desktop a mobilní aplikace jsou upstream a shell
nemají.

## Kdy vydávat

- **Nový upstream stable** (`pingdotgg/t3code` vydal `vX.Y.Z`): přestav
Expand Down Expand Up @@ -216,7 +261,7 @@ změny.
```

3. **Canary přes preview.** Vydej preview a na canary Mašinách pod launcherem
(Spectoda VM101, Matějova osobní VM, potom další Mašiny) ho nainstaluj přes
(nejdřív testovací VM klientské Organizace, potom osobní VM a další Mašiny) ho nainstaluj přes
SSH s TTY. Lokální `t3 update` nejde přes launcherův trial ani zálohu
databáze (ty má jen tlačítko Update, #22), proto nejdřív zálohuj databázi:

Expand Down
Loading