Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 20 additions & 38 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,32 +39,26 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: bun install --frozen-lockfile
- run: bun run build

lint-and-format:
name: Lint & Format
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm lint
- run: pnpm format:check
- run: bun install --frozen-lockfile
- run: bun run lint
- run: bun run format:check

typecheck:
name: Typecheck
Expand All @@ -74,16 +68,13 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm -r typecheck
- run: bun install --frozen-lockfile
- run: bun run build
- run: bun run --filter '*' typecheck

test-core:
name: "Test: core"
Expand All @@ -93,15 +84,12 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @hyperframes/core test -- --coverage
- run: bun install --frozen-lockfile
- run: bun run --filter @hyperframes/core test -- --coverage

test-engine:
name: "Test: engine"
Expand All @@ -111,15 +99,12 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @hyperframes/engine test
- run: bun install --frozen-lockfile
- run: bun run --filter @hyperframes/engine test

test-runtime-contract:
name: "Test: runtime contract"
Expand All @@ -129,15 +114,12 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @hyperframes/core test:hyperframe-runtime-ci
- run: bun install --frozen-lockfile
- run: bun run --filter @hyperframes/core test:hyperframe-runtime-ci

semantic-pr-title:
name: Semantic PR title
Expand Down
9 changes: 3 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,14 @@ jobs:
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: bun install --frozen-lockfile

- name: Bump versions
run: pnpm set-version ${{ inputs.version }}
run: bun run set-version ${{ inputs.version }}

- name: Create release PR
env:
Expand Down
32 changes: 16 additions & 16 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,38 @@ Thanks for your interest in contributing to Hyperframes! This guide will help yo

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

## Development

```bash
pnpm install # Install all dependencies
pnpm dev # Run the studio (composition editor)
pnpm build # Build all packages
pnpm -r typecheck # Type-check all packages
pnpm lint # Lint all packages
pnpm format:check # Check formatting
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

```bash
pnpm --filter @hyperframes/core test # Core unit tests (vitest)
pnpm --filter @hyperframes/engine test # Engine unit tests (vitest)
pnpm --filter @hyperframes/core test:hyperframe-runtime-ci # Runtime contract 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

```bash
pnpm lint # Run oxlint
pnpm lint:fix # Run oxlint with auto-fix
pnpm format # Format all files with oxfmt
pnpm format:check # Check formatting without writing
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](https://github.com/evilmartians/lefthook)) run automatically after `pnpm install` and enforce linting + formatting on staged files before each commit.
Git hooks (via [lefthook](https://github.com/evilmartians/lefthook)) run automatically after `bun install` and enforce linting + formatting on staged files before each commit.

## Pull Requests

Expand Down Expand Up @@ -71,7 +71,7 @@ All packages use **fixed versioning** — every release bumps all packages to th

```bash
# Bump versions, commit to a branch, create PR
pnpm set-version 0.2.0
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"
Expand Down
18 changes: 13 additions & 5 deletions Dockerfile.test
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ FROM node:22-bookworm-slim

# ── System dependencies (identical to production) ────────────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
unzip \
ffmpeg \
chromium \
libgbm1 \
Expand Down Expand Up @@ -57,22 +60,27 @@ RUN npx --yes @puppeteer/browsers install chrome-headless-shell@stable \

WORKDIR /app

# Install bun
RUN curl -fsSL https://bun.sh/install | bash
ENV PATH="/root/.bun/bin:$PATH"

# Install dependencies (full, including devDependencies for tsx + test harness)
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./
COPY package.json bun.lock pnpm-workspace.yaml ./
COPY packages/core/package.json packages/core/package.json
COPY packages/engine/package.json packages/engine/package.json
COPY packages/producer/package.json packages/producer/package.json
RUN corepack enable && corepack prepare pnpm@10 --activate \
&& pnpm install --frozen-lockfile
COPY packages/cli/package.json packages/cli/package.json
COPY packages/studio/package.json packages/studio/package.json
RUN bun install --frozen-lockfile

# Copy source
COPY packages/core/ packages/core/
COPY packages/engine/ packages/engine/
COPY packages/producer/ packages/producer/

# Build core runtime artifacts (needed by renderer)
RUN pnpm --filter @hyperframes/core build:hyperframes-runtime:modular
RUN bun run --filter @hyperframes/core build:hyperframes-runtime:modular

WORKDIR /app/packages/producer

ENTRYPOINT ["pnpm", "exec", "tsx", "src/regression-harness.ts", "--", "--sequential"]
ENTRYPOINT ["bunx", "tsx", "src/regression-harness.ts", "--", "--sequential"]
Loading
Loading