Utveckling
Krav
- Bun för installationer och skript i arbetsytan
- Node.js 20+
- tmux och cloudflared för end-to-end-tester
- Daytona API-nyckel + git-uppgifter för sandboxintegreringstestet (valfritt)
- Playwright för UI-tester från början till slut
Installation
bun install
Kör appen
bun run dev:beam
Det här bygger CLI, startar den lokala servern på port 8787 (åsidosätt med TERMBRIDGE_DEV_PORT) med sessions-codex tmux (åsidosätt med TERMBRIDGE_DEV_SESSION) och startar utvecklings-UI för Vite, som proxyar /__tb (inklusive WebSockets) till servern. En inlösen-URL för utveckling skrivs ut så att du kan öppna den i webbläsaren. Ställ in TERMBRIDGE_SKIP_BUILD=1 för att hoppa över bygget av CLI.
Flera sessioner
TERMBRIDGE_SESSIONS=2 bun run dev:beam
Eller använd genvägen:
bun run dev:beam:multi
Lokalt cookieläge
dev:beam ställer in TERMBRIDGE_INSECURE_COOKIE=1 om du inte själv anger det, så sessionscookies fungerar över vanlig HTTP. När du kör CLI direkt utan HTTPS anger du det uttryckligen:
TERMBRIDGE_INSECURE_COOKIE=1 node cli/dist/bin.js --no-tunnel --public-url http://127.0.0.1:8080 --port 8080
Tester
bun run test
test:mockedkör enhets- och integrationstester med 100 % täckning.test:clikör riktiga end-to-end-tester med CLI + UI (tmux + cloudflared + Playwright).- Sandlådetestet Daytona i
test:cliläser sina inställningar endast från en.env-fil i entermbridge-test-app-katalog intill det här repot (../termbridge-test-app/.env). Det körs när filen angerTERMBRIDGE_E2E_DAYTONA=1ochTERMBRIDGE_DAYTONA_API_KEY. Ange ett repo där som går att klona medTERMBRIDGE_SANDBOX_REPO; standardtestrepot är privat och kräver ocksåTERMBRIDGE_SANDBOX_GIT_USERNAMEochTERMBRIDGE_SANDBOX_GIT_TOKEN.
Dokumentation
Dokumentationen består av vanliga Markdown-filer i docs/, med frontmatter på varje sida och meta.json-filer som anger navigeringsordningen. Den publiceras på termbridge.dev. Validera den med:
node scripts/check-docs-content.mjs --root docs --expected-docs 16 --expected-nav 3
Dokumentationsflödet kör samma kontroll på pull requests som ändrar docs/.