Ctrl K
ComunidadGuías…

CONTRIBUTING.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Contributing

Thanks for taking the time to contribute. This document covers how the project is
developed and released.

## Development

```bash
git clone https://github.com/bayar-gg/vrcloud-ide.git
cd vrcloud-ide
npm ci
cp .env.example .env     # set AUTH_USER, AUTH_PASS, AUTH_SECRET; HTTPS=false is handy locally
npm start                # http://127.0.0.1:1337
npm test                 # hermetic unit/contracts; no .env or running server
npm run test:smoke       # optional: .env + a running server on port 1337
```

Live provider evaluation is separate from tests and must be explicitly enabled:

```bash
SMART_AGENT_EVAL=1 CURSOR_API_KEY=... npm run eval:agent
```

It copies `eval/cases/` fixtures into temporary workspaces and writes ignored JSON metrics
under `eval/results/`. It is never run by `npm test`.

There is no build step. The frontend is plain JavaScript in `public/`, the server is
Node.js in `server.js` and `lib/`. Static assets are cache-busted with the `?v=`
parameter in `public/index.html`; bump it when you change CSS or JS.

Guidelines:

- Keep it a single process with no new runtime dependencies unless there is no
  reasonable alternative. Native modules must build on Linux and Windows.
- Match the existing style (2 spaces, semicolons, double quotes, small helpers, no
  frameworks). Comments explain *why*, not *what*.
- Anything the AI agent reads (prompts, tool names and descriptions, tool results) is in
  **English** and lives in **one file**: `lib/agent-instructions.js`. Do not add prompt text
  or tool descriptions elsewhere; import from that module. UI strings are Indonesian by
  default and must have an English entry in `public/js/i18n.js`.
- Test on both Linux and Windows when touching terminals, runners, remote desktop or
  the installers.
- Do not commit secrets, `data/`, `workspace/` or `.env`.

## Release policy: one commit, one version

The repository intentionally keeps **a single commit on `main`**. A release does not add
a commit; it replaces the commit and bumps `version` in `package.json`:

```bash
node scripts/release.js 3.1.0          # bumps version, amends the single commit, force-pushes
node scripts/release.js patch          # or: major | minor | patch
node scripts/release.js 3.1.0 --no-push
```

The script:

1. verifies the working tree is on `main`,
2. writes the new version to `package.json` and `package-lock.json`,
3. stages everything, creates or amends the root commit with the message
   `VRCloud IDE vX.Y.Z`,
4. force-pushes `main` (with lease).

Installed servers update with `git fetch --depth 1` + `git reset --hard FETCH_HEAD`
(see `lib/updater.js`), so rewritten history never breaks `vrcloud update`.

Record user-facing changes in `CHANGELOG.md` under the new version before releasing.

## Pull requests

- Open an issue first for larger changes so the approach can be discussed.
- Keep pull requests focused. Explain the motivation and how you verified the change.
- Pull request branches may contain as many commits as you like; they are squashed into
  the release commit when merged.

## Reporting bugs

Use the issue templates. Include your OS, Node.js version, how you installed
(bootstrap / Windows installer / manual), and the relevant part of `vrcloud logs`.