
# Pengembangan

## Persyaratan

- **Bun** untuk instalasi dan skrip ruang kerja
- **Node.js 20+**
- **tmux** dan **cloudflared** untuk pengujian menyeluruh
- **Daytona kunci API + kredensial git** untuk pengujian integrasi sandbox (opsional)
- **Playwright** untuk pengujian e2e UI

## Instalasi

```bash
bun install
```

## Menjalankan aplikasi

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

Ini akan membangun CLI, memulai server lokal di port `8787` (ganti dengan `TERMBRIDGE_DEV_PORT`) menggunakan sesi tmux `codex` (ganti dengan `TERMBRIDGE_DEV_SESSION`), lalu menjalankan Vite dev UI yang memproksikan `/__tb` (termasuk WebSockets) ke server tersebut. Perintah ini mencetak URL penukaran dev untuk dibuka di browser. Atur `TERMBRIDGE_SKIP_BUILD=1` untuk melewati build CLI.

### Beberapa sesi

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

Atau gunakan pintasan:

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

### Mode cookie lokal

`dev:beam` menetapkan `TERMBRIDGE_INSECURE_COOKIE=1` kecuali jika Anda menetapkannya sendiri, sehingga cookie sesi dapat digunakan melalui HTTP biasa. Saat menjalankan CLI secara langsung tanpa HTTPS, tetapkan secara eksplisit:

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

## Pengujian

```bash
bun run test
```

- `test:mocked` menjalankan pengujian unit/integrasi dengan cakupan 100%.
- `test:cli` menjalankan pengujian e2e CLI + UI sungguhan (tmux + cloudflared + Playwright).
- Pengujian sandbox Daytona di `test:cli` hanya membaca pengaturannya dari file `.env` di direktori `termbridge-test-app` yang berada di samping repositori ini (`../termbridge-test-app/.env`). Pengujian berjalan jika file tersebut menetapkan `TERMBRIDGE_E2E_DAYTONA=1` dan `TERMBRIDGE_DAYTONA_API_KEY`. Tetapkan `TERMBRIDGE_SANDBOX_REPO` di sana ke repositori yang dapat Anda klon; repositori pengujian default bersifat privat dan juga memerlukan `TERMBRIDGE_SANDBOX_GIT_USERNAME` serta `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Dokumentasi

Konten dokumentasi berupa file Markdown biasa di `docs/`, dengan frontmatter di setiap halaman dan file `meta.json` untuk urutan navigasi. Dokumentasi dipublikasikan di [termbridge.dev](https://termbridge.inline0.dev/id/). Validasi dengan:

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

Alur kerja konten Docs menjalankan pemeriksaan yang sama pada pull request yang mengubah `docs/`.
