Files
hyperframes/CONTRIBUTING.md
T
Vance Ingalls 94e25443ae build: migrate from pnpm to bun as package manager (#28)
## Summary
- Replace pnpm with bun for dependency installation, script running, and ad-hoc execution
- Keep pnpm for publish workflow only (`publishConfig` overrides + `--provenance`)
- `bun install` replaces `pnpm install` (~4-5x faster cold installs)
- `bun run` replaces `pnpm run` (~28x less startup overhead)
- `bunx` replaces `npx` in lefthook hooks
- CI workflows updated (`oven-sh/setup-bun@v2` + `actions/setup-node@v4`)
- `pnpm-lock.yaml` removed, `bun.lock` generated
- `pnpm-workspace.yaml` kept for publish compatibility
- CLI source code (`packages/cli/src/`) unchanged — shipped to end users who may not have bun

Part 5/5 of [VA-851](https://linear.app/heygen/issue/VA-851/pre-migration-configure-eslint-prettier-and-conventional-commits)

## Test plan
- [x] `bun run lint` — 0 errors
- [x] `bun run format:check` — all files pass
- [x] `bun run build` — all 5 packages build
- [x] 330 core tests pass
- [x] 18 engine tests pass
- [x] `publish.yml` unchanged (pnpm stays for npm publishing)
- [x] No `bunx`/`bun run` references in shipped source code (`packages/*/src/`)
2026-03-23 19:50:57 -07:00

3.4 KiB

Contributing to Hyperframes

Thanks for your interest in contributing to Hyperframes! This guide will help you get started.

Getting Started

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/YOUR_USERNAME/hyperframes.git
  3. Install dependencies: bun install
  4. Create a branch: git checkout -b my-feature

Development

bun install        # Install all dependencies
bun run dev        # Run the studio (composition editor)
bun run build      # Build all packages
bun run --filter '*' typecheck   # Type-check all packages
bun run lint       # Lint all packages
bun run format:check   # Check formatting

Running Tests

bun run --filter @hyperframes/core test          # Core unit tests (vitest)
bun run --filter @hyperframes/engine test        # Engine unit tests (vitest)
bun run --filter @hyperframes/core test:hyperframe-runtime-ci  # Runtime contract tests

Linting & Formatting

bun run lint            # Run oxlint
bun run lint:fix        # Run oxlint with auto-fix
bun run format          # Format all files with oxfmt
bun run format:check    # Check formatting without writing

Git hooks (via lefthook) run automatically after bun install and enforce linting + formatting on staged files before each commit.

Pull Requests

  • Use conventional commit format for all commits (e.g., feat: add timeline export, fix: resolve seek overflow). Enforced by a git hook.
  • CI must pass before merge (build, typecheck, tests, semantic PR title)
  • PRs require at least 1 approval

Packages

Package Description
@hyperframes/core Types, HTML generation, runtime, linter
@hyperframes/engine Seekable page-to-video capture engine
@hyperframes/producer Full rendering pipeline (capture + encode)
@hyperframes/studio Composition editor UI
hyperframes CLI for creating, previewing, and rendering

Releasing (Maintainers)

All packages use fixed versioning — every release bumps all packages to the same version.

  1. Go to Actions → Prepare Release → Run workflow
  2. Enter the version (e.g., 0.2.0)
  3. Click Run workflow — this creates a release PR
  4. Review and merge the PR
  5. Merging auto-creates the v0.2.0 tag, which triggers npm publish and a GitHub Release

Via CLI

# Bump versions, commit to a branch, create PR
bun run set-version 0.2.0
git checkout -b release/v0.2.0
git add packages/*/package.json
git commit -m "chore: release v0.2.0"
git push origin release/v0.2.0
gh pr create --title "chore: release v0.2.0" --base main
# After merge, the tag + publish happen automatically

Reporting Issues

  • Use GitHub Issues for bug reports and feature requests
  • Search existing issues before creating a new one
  • Include reproduction steps for bugs

Code of Conduct

This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.

License

By contributing, you agree that your contributions will be licensed under the MIT License.