2025-12-07 19:32:53 +02:00
# Contributing to OpenChamber
2026-03-05 03:07:26 +02:00
## Getting Started
2025-12-07 19:32:53 +02:00
```bash
2026-07-13 08:59:31 +03:00
git clone https://github.com/openchamber/openchamber.git
2025-12-07 19:32:53 +02:00
cd openchamber
2025-12-26 16:45:30 +02:00
bun install
2026-03-05 03:07:26 +02:00
```
## Dev Scripts
2026-06-05 23:58:43 +03:00
Run commands from the project root unless a section says otherwise.
2026-03-05 03:07:26 +02:00
### Web
2025-12-21 16:21:10 +02:00
2026-03-05 03:07:26 +02:00
| Script | Description | Ports |
|--------|-------------|-------|
2026-06-05 23:58:43 +03:00
| `bun run dev` | Default web HMR dev flow. | auto-selected dev ports |
2026-03-05 03:07:26 +02:00
| `bun run dev:web:full` | Build watcher + Express server. No HMR — manual refresh after changes. | `3001` (server + static) |
| `bun run dev:web:hmr` | Vite dev server + Express API. **Open the Vite URL for HMR** , not the backend. | `5180` (Vite HMR), `3902` (API) |
2026-06-05 23:58:43 +03:00
| `bun run start:web` | Start the packaged web server. | `3000` by default |
2025-12-21 16:21:10 +02:00
2026-03-05 03:07:26 +02:00
Both are configurable via env vars: `OPENCHAMBER_PORT` , `OPENCHAMBER_HMR_UI_PORT` , `OPENCHAMBER_HMR_API_PORT` .
2026-06-03 02:42:00 +03:00
### Desktop (Electron)
2026-03-05 03:07:26 +02:00
```bash
2026-06-05 23:58:43 +03:00
bun run electron:dev # HMR web UI + Electron shell
bun run electron:dev:bundled # Electron shell using built web assets
bun run electron:build # Package desktop app for the current platform
2026-03-05 03:07:26 +02:00
```
2025-12-21 16:21:10 +02:00
2026-07-13 08:59:31 +03:00
Desktop supports macOS, Windows, and Linux. The build output is written to `packages/electron/dist` .
2026-06-05 23:58:43 +03:00
macOS builds create `dmg` and `zip` files. You need Xcode/build tools for notarized packaging and icon asset work.
Windows builds create an NSIS installer. If signing env vars are not set, the build script makes an unsigned installer.
2026-07-13 08:59:31 +03:00
Linux builds produce an AppImage for the native x64 or arm64 host.
2026-06-05 23:58:43 +03:00
For desktop-specific details, see [`packages/electron/README.md` ](./packages/electron/README.md ).
2026-03-05 03:07:26 +02:00
### VS Code Extension
```bash
2026-06-05 23:58:43 +03:00
bun run vscode:dev # Watch mode + Extension Development Host
bun run vscode:build # Build extension + webview
bun run vscode:package # Create a local .vsix package
2026-03-05 03:07:26 +02:00
```
2025-12-21 16:21:10 +02:00
2026-06-05 23:58:43 +03:00
`bun run vscode:dev` opens an Extension Development Host automatically. You can override the editor or workspace with `OPENCHAMBER_VSCODE_BIN` and `OPENCHAMBER_VSCODE_DEV_WORKSPACE` .
Example: `OPENCHAMBER_VSCODE_BIN=cursor bun run vscode:dev` .
### Shared UI (`packages/ui`)
No standalone app server. This is a source-level library used by Web, Desktop, and VS Code.
Useful package commands:
2026-03-05 03:07:26 +02:00
```bash
2026-06-05 23:58:43 +03:00
bun run build:ui
bun run type-check:ui
bun run lint:ui
2025-12-07 19:32:53 +02:00
```
2026-06-05 23:58:43 +03:00
## Build And Package Commands
| Command | What it does |
|---------|--------------|
| `bun run build` | Build all workspaces |
| `bun run build:web` | Build only `packages/web` |
| `bun run build:ui` | Build only `packages/ui` |
| `bun run build:electron` | Run Electron package build script without full packaging |
| `bun run electron:build` | Build packaged desktop app for the current OS |
| `bun run vscode:build` | Build the VS Code extension |
| `bun run vscode:package` | Package the VS Code extension as `.vsix` |
| `bun run pack:web` | Create a package archive for `@openchamber/web` |
## Platform Build Notes
2026-03-05 03:07:26 +02:00
2026-06-05 23:58:43 +03:00
You usually build desktop installers on the target platform.
macOS:
```bash
bun run electron:build
bun run release:test:intel
bun run release:test:arm
```
Windows:
```bash
bun run electron:build
```
2026-07-13 08:59:31 +03:00
Linux x64 and arm64 AppImages are packaged natively on the matching host architecture. Use Bun for dependency installation and packaging orchestration:
```bash
OPENCHAMBER_TARGET_ARCH = x64 bun run electron:build
# On an arm64 host:
OPENCHAMBER_TARGET_ARCH = arm64 bun run electron:build
bun run --cwd packages/electron verify:linux-appimage
```
The final AppImage verifier checks desktop identity and the architecture of Electron, the bundled OpenCode CLI, and packaged native modules.
2026-03-05 03:07:26 +02:00
2025-12-07 19:32:53 +02:00
## Before Submitting
```bash
2025-12-26 16:45:30 +02:00
bun run type-check # Must pass
bun run lint # Must pass
bun run build # Must succeed
2025-12-07 19:32:53 +02:00
```
2026-06-05 23:58:43 +03:00
For docs-only changes, validation may be enough:
```bash
bun run docs:validate
```
2025-12-07 19:32:53 +02:00
## Code Style
- Functional React components only
2026-03-05 03:07:26 +02:00
- TypeScript strict mode — no `any` without justification
- Use existing theme colors/typography from `packages/ui/src/lib/theme/` — don't add new ones
2025-12-07 19:32:53 +02:00
- Components must support light and dark themes
2026-03-05 03:07:26 +02:00
- Prefer early returns and `if/else` /`switch` over nested ternaries
- Tailwind v4 for styling; typography via `packages/ui/src/lib/typography.ts`
2025-12-07 19:32:53 +02:00
## Pull Requests
1. Fork and create a branch
2. Make changes
2026-03-05 03:07:26 +02:00
3. Run the validation commands above
2025-12-07 19:32:53 +02:00
4. Submit PR with clear description of what and why
## Project Structure
2026-03-05 03:07:26 +02:00
```
packages/
ui/ Shared React components, hooks, stores, and theme system
web/ Web server (Express) + frontend (Vite) + CLI
2026-06-03 02:42:00 +03:00
electron/ Electron desktop shell
2026-03-05 03:07:26 +02:00
vscode/ VS Code extension (extension host + webview)
```
2025-12-07 19:32:53 +02:00
See [AGENTS.md ](./AGENTS.md ) for detailed architecture reference.
2026-03-05 03:07:26 +02:00
## Not a developer?
You can still help:
- Report bugs or UX issues — even "this felt confusing" is valuable feedback
- Test on different devices, browsers, or OS versions
- Suggest features or improvements via issues
- Help others in Discord
2025-12-07 19:32:53 +02:00
## Questions?
2026-07-13 08:59:31 +03:00
Open an [issue ](https://github.com/openchamber/openchamber/issues ) or ask in [Discord ](https://discord.gg/ZYRSdnwwKA ).