
# Kehitys

## Vaatimukset

- **Bun** työtilan asennuksiin ja komentosarjoihin
- **Node.js 20+**
- **tmux** ja **cloudflared** päästä päähän -testeihin
- **Daytona API-avain ja git-tunnistetiedot** hiekkalaatikon integraatiotestiin (valinnainen)
- **Playwright** UI-päästä päähän -testeihin

## Asennus

```bash
bun install
```

## Sovelluksen käynnistäminen

```bash
bun run dev:beam
```

Tämä kokoaa CLI-ohjelman, käynnistää paikallisen palvelimen porttiin `8787` (ohita arvolla `TERMBRIDGE_DEV_PORT`) käyttäen tmux-istuntoa `codex` (ohita arvolla `TERMBRIDGE_DEV_SESSION`) ja käynnistää Vite-kehityksen UI-palvelimen, joka välittää `/__tb`-liikenteen (myös WebSocket-liikenteen) kyseiselle palvelimelle. Tulosteessa näkyy kehityskäyttöön tarkoitettu lunastusURL, jonka voi avata selaimessa. Ohita CLI-koontiversio asettamalla `TERMBRIDGE_SKIP_BUILD=1`.

### Useita istuntoja

```bash
TERMBRIDGE_SESSIONS=2 bun run dev:beam
```

Tai käytä pikanäppäintä:

```bash
bun run dev:beam:multi
```

### Paikallinen evästetila

`dev:beam` asettaa arvoksi `TERMBRIDGE_INSECURE_COOKIE=1`, ellet aseta sitä itse, joten istuntoevästeet toimivat salaamattomalla HTTP-yhteydellä. Kun suoritat CLI-ohjelman suoraan ilman HTTPS-asetusta, aseta se nimenomaisesti:

```bash
TERMBRIDGE_INSECURE_COOKIE=1 node cli/dist/bin.js --no-tunnel --public-url http://127.0.0.1:8080 --port 8080
```

## Testit

```bash
bun run test
```

- `test:mocked` suorittaa yksikkö- ja integraatiotestit, joiden kattavuus on 100 %.
- `test:cli` suorittaa oikeat CLI- ja UI-päästä päähän -testit (tmux + cloudflared + Playwright).
- Kohteen `test:cli` Daytona-hiekkalaatikkotesti lukee asetuksensa vain `termbridge-test-app`-hakemistossa, tämän tietovaraston vieressä olevasta `.env`-tiedostosta (`../termbridge-test-app/.env`). Testi suoritetaan, kun tiedostossa asetetaan `TERMBRIDGE_E2E_DAYTONA=1` ja `TERMBRIDGE_DAYTONA_API_KEY`. Aseta siellä `TERMBRIDGE_SANDBOX_REPO` tietovarastoksi, jonka voit kloonata; oletustestitietovarasto on yksityinen ja vaatii myös asetukset `TERMBRIDGE_SANDBOX_GIT_USERNAME` ja `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Dokumentaatio

Dokumentaatio koostuu pelkistä Markdown-tiedostoista hakemistossa `docs/`. Jokaisella sivulla on etuosa, ja `meta.json`-tiedostot määrittävät navigointijärjestyksen. Dokumentaatio julkaistaan osoitteessa [termbridge.dev](https://termbridge.inline0.dev/fi/). Tarkista se komennolla:

```bash
node scripts/check-docs-content.mjs --root docs --expected-docs 16 --expected-nav 3
```

Dokumentaation sisältötyönkulku suorittaa saman tarkistuksen vetopyynnöille, jotka koskevat tiedostoja `docs/`.
