CONTRIBUTING.md
Rama main · réplica de lectura del repositorio original.
# 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`.