oxc stack#1

merged4
main
juliusmarminge/barcelona
openedFeb 9, 2026byJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 6d ago

the biome binary has crashed my computer enough times that i don't want it anywhere near htis machine...

Summary by CodeRabbit

  • Chores

    • Upgraded package manager from Bun 1.1.38 to 1.3.9.
    • Replaced Biome with oxfmt and oxlint; added related workspace/editor config and formatter/linter settings.
    • Updated TypeScript compilation target to ES2023.
    • Removed redundant lint configuration and related scripts.
  • New Features

    • Added a resolveModelSlug utility to normalize and validate model identifiers.
  • Bug Fixes

    • Improved error handling by chaining original errors as causes.

Checks

3 successful
All checks passed
a6606e8
Synced from GitHub

Caution

Review failed

The pull request is closed.

Walkthrough

Migrates formatting/linting from Biome to Oxfmt/Oxlint, adds VSCode Oxc recommendations/settings, upgrades Bun and TypeScript targets to newer versions, introduces a new exported helper resolveModelSlug, and applies widespread formatting/refactor-style changes plus one error chaining improvement.

Changes

Cohort / File(s)Summary
Tooling & Editor config
./.oxfmtrc.json, ./.oxlintrc.json, ./.vscode/extensions.json, ./.vscode/settings.json, ./biome.json
Add Oxfmt/Oxlint configs and VSCode recommendations/settings; remove biome.json. Check ignorePatterns and plugin/rule toggles in .oxlintrc.json.
Repository root config
./package.json, ./turbo.json, ./tsconfig.base.json, ./README.md
Replace Biome tooling with oxfmt/oxlint, update scripts (lint → oxlint, add fmt), add Bun engine and update packageManager to bun@1.3.9, remove top-level lint turbo task, bump TS target/lib to ES2023, and minor README formatting.
Desktop app scripts & package
apps/desktop/package.json, apps/desktop/scripts/dev-electron.mjs, apps/desktop/tsconfig.json
Switch dev script from concurrently to bun run --parallel, remove lint script and concurrently devDependency, and bump TS lib to ES2023; minor script formatting changes.
Desktop app internals
apps/desktop/src/codexAppServerManager.ts, apps/desktop/src/main.ts, apps/desktop/src/preload.ts, apps/desktop/src/processManager.ts, apps/desktop/src/todoStore.ts, apps/desktop/src/*test.ts
Primarily formatting (many multi-line -> single-line refactors). Note: startSession error throw now includes original error as cause; runTerminalCommand signature formatting simplified. Tests and helpers reformatted only.
Renderer app config & styling
apps/renderer/package.json, apps/renderer/tsconfig.json, apps/renderer/src/index.css
Remove renderer lint script, bump TS lib to ES2023, minor CSS formatting adjustments.
Renderer components & logic
apps/renderer/src/components/ChatMarkdown.tsx, apps/renderer/src/components/ChatView.tsx, apps/renderer/src/components/DiffPanel.tsx, apps/renderer/src/components/Sidebar.tsx, apps/renderer/src/persistenceSchema.ts, apps/renderer/src/session-logic.ts, apps/renderer/src/*test.ts
Mostly stylistic and minor behavior-preserving refactors. Notable logic change: use of .toReversed() instead of .reverse() to avoid mutation in reversal logic. Various UI class/token updates.
Contracts package: types & API
packages/contracts/package.json, packages/contracts/src/ipc.ts, packages/contracts/src/model.ts, packages/contracts/src/provider.ts, packages/contracts/src/*test.ts
Add files: ["dist"] canonicalization in package.json and remove redundant entry; reflow type/signature formatting; add exported resolveModelSlug(model) function (normalizes and falls back to DEFAULT_MODEL).
Misc tests & small utilities
apps/desktop/src/ipcHelpers.test.ts, packages/contracts/src/model.test.ts, apps/renderer/src/model-logic.test.ts, other small files
Formatting-only updates to imports, expectations, and helper signatures; no behavioral changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • pingdotgg/codething-mvp#1 — Repository-level tooling migration and configuration changes (adds .oxfmtrc/.oxlintrc, VSCode Oxc settings, replaces Biome with Oxfmt/Oxlint); appears to mirror this PR's migration work.
🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 7.14% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check❓ InconclusiveThe title 'oxc stack' refers to a core aspect of the changeset—replacing Biome with the Oxc linting/formatting toolchain—but is vague and could be unclear to someone unfamiliar with the project.Consider a more descriptive title like 'Replace Biome with Oxc toolchain' to clearly communicate the main change to reviewers scanning the history.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch juliusmarminge/barcelona

Comment @coderabbitai help to get the list of available commands and usage tips.

Synced from GitHub

Adopt the oxc stack by replacing repository linting/formatting with oxlint and oxfmt, updating Bun to >=1.3.9, and switching apps/desktop dev to Bun’s parallel runner

Introduce oxfmt and oxlint with config files, remove Biome and concurrently, update Bun engine and lockfile, and add small ES2023/toReversed() refactors plus improved error causality in CodexAppServerManager.startSession.

📍Where to Start

Start with the root tooling changes in package.json, then review the formatter/linter configs in .oxfmtrc.json and .oxlintrc.json; for the sole logic change, see CodexAppServerManager.startSession in apps/desktop/src/codexAppServerManager.ts.


Macroscope summarized a6606e8.

Added 4 commits

package.jsonline 26Open thread
……@@ -1,23 +1,29 @@
22- }
24+ },
25+ "engines": {
26+ "bun": ">=1.3.9"

P2 CI Uses Unsupported Bun Version

When CI runs .github/workflows/ci.yml, it installs Bun 1.1.38, but this PR changes the repository contract to require Bun >=1.3.9 and sets packageManager to bun@1.3.9. The workflow therefore exercises install, lint, typecheck, and tests with a runtime outside the declared supported range, so a green CI run does not validate the version this PR requires. Update the workflow's bun-version to 1.3.9 (or keep the package requirement at 1.1.38) so CI and the published runtime contract agree.

[Context Used: AGENTS.md — run the repository's focused checks and keep CI/runtime contracts consistent.]

[How this was verified: .github/workflows/ci.yml still contains bun-version: 1.1.38, while the changed package.json declares engines.bun >=1.3.9 and packageManager bun@1.3.9.

Reviewed by gpt-6-astra (Medium) via Codex harness

Confidence Score: 4/5

This PR is nearly safe to merge; CI still runs on Bun 1.1.38 even though the repository now requires Bun 1.3.9.

Findings

  1. P2 CI Uses Unsupported Bun Version ▶
Summary

This PR replaces Biome with the OXC formatter/linter stack and raises the Bun runtime requirement.

  • Adds oxfmt and oxlint configuration and scripts.
  • Reformats source, config, and Tailwind opacity classes.
  • Raises the TypeScript target/lib to ES2023 and uses toReversed().
  • Preserves typecheck behavior; the desktop test suite has unrelated Windows-only spawn echo/sleep ENOENT failures in the existing process manager tests.
  • CI's Bun version must be aligned with the new package contract.
Diagram
mermaid
1sequenceDiagram
2 participant Dev as Developer
3 participant CI as GitHub Actions
4 participant Bun as Bun runtime
5 participant Scripts as lint/typecheck/test
6 Dev->>CI: Push PR
7 CI->>Bun: Install 1.1.38
8 CI->>Scripts: Run repository checks
9 Scripts-->>CI: Validate against older runtime
10 Dev->>CI: Expected package contract 1.3.9

Reviews (1) · Last reviewed commit: a6606e8 "unused" · Reviewed by gpt-6-astra (Medium) via Codex harness