Skip to content

Replace standalone quality tools with Bun native commands - #240

Merged
shouze merged 2 commits into
mainfrom
shouze-bun-native-tooling
Oct 28, 2026
Merged

shouze merged 2 commits into
mainfrom
shouze-bun-native-tooling

Conversation

@shouze

@shouze shouze commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

What does this PR do?

Closes #239.

Replace standalone oxfmt and oxlint development dependencies with Bun 1.4.4 native commands:

  • bun run format runs bun fmt .; bun run format:check runs bun fmt --check ..
  • bun run typecheck runs bun check; bun run lint remains a compatibility alias.
  • Remove obsolete configurations and exclusive platform bindings from the lockfile without upgrading unrelated dependencies. Preserve 100-column formatting in bunfig.toml; unchanged files require no formatting migration.
  • Pin all seven Bun setup steps across CI, CD and docs/browser workflows through .bun-version. Add native release quality gates and make docs audits react to runtime/dependency changes. Preserve the existing required CI status-check name.
  • Resolve errors exposed by the newly enabled strict checker: complete test fixtures, shared type-safe fetch mocks preserving Bun's preconnect, browser/Web API declarations, a discriminated Row type, boolean header visibility and a string annotation for keyboard input. No strictness relaxation or project-file exclusions.
  • Update README, contributor/installation docs, AGENTS.md, task instructions and repository skills. No repository custom agents exist to update. Historical release posts are unchanged.
  • Tell knip that fmt and check are native Bun subcommands, not missing external binaries.

Intentional coverage change: bun check is a TypeScript checker, not a linter. The old oxlint correctness/suspicious rules are intentionally retired with the user's approval; this is not equivalent lint coverage. Vue templates remain outside native TypeScript checking and are processed by the documentation build. There is no CLI interface or compiled-binary runtime requirement change.

How did you verify your code works?

  • bun test --reporter=dots — passed: 1,025 tests, 0 failures (baseline: 1,024). Added a fetch-mock regression check.
  • bun run typecheck — passed: 55 TypeScript files, zero type errors.
  • bun run lint — passed: compatibility alias runs the same native checker.
  • bun run format:check — passed: all 146 matched files formatted.
  • bun run knip — passed.
  • bun install --frozen-lockfile --quiet — passed without lockfile changes.
  • bun run build.ts — passed; standalone macOS arm64 binary built and ad-hoc signed.
  • dist/github-code-search --version — passed: 2.0.0 with build commit/platform metadata.
  • bun run docs:build — passed, no dead-link errors; existing bundle-size advisory remains.
  • actionlint .github/workflows/*.yaml — passed using actionlint 1.7.12 downloaded only into session artifacts, then removed (no project dependency added).
  • Migration assertions — passed: removed dependencies/bindings absent, native scripts exact, all seven Bun setup steps read .bun-version.
  • Negative fixtures — passed: an intentional TS2322 error and unformatted code each exit 1; bun fmt --check leaves input unchanged.

Remote checks: all passed on commit 11eca83.

Aikido scanning could not run because its MCP server is unavailable in this session. Setup: https://help.aikido.dev/ide-plugins/aikido-mcp.

No Vue, CSS or page-layout changes are included. CD was updated and statically validated, but its release-tag workflow was not triggered; no release tag was created.

### What does this PR do?

Closes #239.

Replace the standalone oxfmt and oxlint development dependencies with Bun 1.4.4 native commands:

- `bun run format` runs `bun fmt .`; `bun run format:check` runs `bun fmt --check .`.
- `bun run typecheck` runs `bun check`; `bun run lint` remains a compatibility alias.
- Remove the old tool configurations and their platform bindings from the lockfile without upgrading unrelated dependencies. Keep the existing 100-column formatting in `bunfig.toml`; unchanged files require no formatting migration.
- Pin all seven Bun setup steps across CI, CD and docs/browser workflows through `.bun-version`. Add native quality gates to releases and make docs audits react to runtime/dependency changes. Preserve the existing required CI status-check name.
- Resolve errors exposed by the newly enabled strict checker: complete test fixtures, type-safe shared fetch mocks preserving Bun's `preconnect`, browser/Web API declarations, a discriminated `Row` type, boolean header visibility and a string annotation for keyboard input. No strictness relaxation or project-file exclusions.
- Update README, contributor/installation docs, AGENTS.md, task instructions and repository skills. No repository custom agents exist to update. Historical release posts are unchanged.
- Tell knip that `fmt` and `check` are native Bun subcommands, not missing external binaries.

**Intentional coverage change:** `bun check` is a TypeScript checker, not a linter. The old oxlint correctness/suspicious rules are intentionally retired with the user's approval; this is not equivalent lint coverage. Vue templates remain outside native TypeScript checking and are processed by the documentation build. There is no CLI interface or compiled-binary runtime requirement change.

### How did you verify your code works?

- `bun test --reporter=dots` — passed: 1,025 tests, 0 failures (baseline: 1,024 tests). Added a fetch-mock regression check.
- `bun run typecheck` — passed: 55 TypeScript files, zero type errors.
- `bun run lint` — passed: compatibility alias runs the same native type checker.
- `bun run format:check` — passed: all 146 matched files formatted.
- `bun run knip` — passed.
- `bun install --frozen-lockfile --quiet` — passed without lockfile changes.
- `bun run build.ts` — passed; standalone macOS arm64 binary built and ad-hoc signed.
- `dist/github-code-search --version` — passed: `2.0.0` with the build's commit/platform metadata.
- `bun run docs:build` — passed, no dead-link errors; existing bundle-size advisory remains.
- `actionlint .github/workflows/*.yaml` — passed using actionlint 1.7.12 downloaded only into session artifacts (no project dependency added).
- Migration assertions — passed: removed dependencies/bindings absent, native scripts exact, all seven Bun setup steps read `.bun-version`.
- Negative fixtures — passed: an intentional TS2322 error and unformatted code each exit 1; `bun fmt --check` leaves input unchanged.

Aikido scanning could not run because its MCP server is unavailable in this session. Setup: https://help.aikido.dev/ide-plugins/aikido-mcp.

Browser accessibility/responsive suites are left to their updated PR workflows; no Vue, CSS or page-layout changes are included here. No release tag was created.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 28, 2026 13:08
@github-actions

Copy link
Copy Markdown
Contributor

Coverage after merging shouze-bun-native-tooling into main will be

96.55%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts92.80%100%91.67%92.92%101–103, 165, 86–87, 92–93
   api.ts94.96%100%100%94.42%340–343, 405, 422, 53, 64–67, 69
   cache.ts94.37%100%100%93.94%139–141, 39
   completions.ts99.44%100%100%99.39%268
   gh-cli.ts100%100%100%100%
   group.ts98.37%100%98.33%98.37%1105, 263–265, 525, 531, 607, 865, 980
   output.ts99.31%100%95.83%99.62%89
   regex.ts99.37%100%100%99.32%360
   render.ts90.35%100%88.24%90.43%175, 177–178, 201–206, 208–210, 213, 234–235, 427–428, 528–532, 562–569, 571–579, 582–584
   scroll-cooldown.ts100%100%100%100%
   style.ts100%100%100%100%
   upgrade.ts86.73%100%92.31%86.36%128, 131, 133–134, 153–154, 167–169, 188–193, 195, 198–202, 209, 214, 250–253
src/render
   filter-match.ts97.22%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.53%100%90.40%99.28%284–285
   layout-constants.ts100%100%100%100%
   mouse-hit.ts100%100%100%100%
   mouse.ts100%100%100%100%
   rows.ts99.34%100%100%99.29%239
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%
   team-pick.ts100%100%100%100%
   terminal.ts100%100%100%100%

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

🔦 Lighthouse Report

Page ⚡ Perf ♿ A11y 🛡️ BP 🔍 SEO Report
/github-code-search/ 🟢 99 (≥96) 🟢 100 (≥99) 🟢 100 (≥99) 🟢 100 (≥99) 🔗 view
/github-code-search/getting-started/ 🟢 99 (≥96) 🟢 100 (≥99) 🟢 100 (≥99) 🟢 100 (≥99) 🔗 view

Thresholds: Perf ≥ 96 · A11y ≥ 99 · BP ≥ 99 · SEO ≥ 99
commit 7de90fc · full workflow run

This comment was marked as outdated.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Coverage after merging shouze-bun-native-tooling into main will be

96.55%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   aggregate.ts100%100%100%100%
   api-utils.ts92.80%100%91.67%92.92%101–103, 165, 86–87, 92–93
   api.ts94.96%100%100%94.42%340–343, 405, 422, 53, 64–67, 69
   cache.ts94.37%100%100%93.94%139–141, 39
   completions.ts99.44%100%100%99.39%268
   gh-cli.ts100%100%100%100%
   group.ts98.37%100%98.33%98.37%1105, 263–265, 525, 531, 607, 865, 980
   output.ts99.31%100%95.83%99.62%89
   regex.ts99.37%100%100%99.32%360
   render.ts90.35%100%88.24%90.43%175, 177–178, 201–206, 208–210, 213, 234–235, 427–428, 528–532, 562–569, 571–579, 582–584
   scroll-cooldown.ts100%100%100%100%
   style.ts100%100%100%100%
   upgrade.ts86.73%100%92.31%86.36%128, 131, 133–134, 153–154, 167–169, 188–193, 195, 198–202, 209, 214, 250–253
src/render
   filter-match.ts97.22%100%92.31%100%
   filter.ts100%100%100%100%
   highlight.ts96.53%100%90.40%99.28%284–285
   layout-constants.ts100%100%100%100%
   mouse-hit.ts100%100%100%100%
   mouse.ts100%100%100%100%
   rows.ts99.34%100%100%99.29%239
   selection.ts100%100%100%100%
   summary.ts100%100%100%100%
   team-pick.ts100%100%100%100%
   terminal.ts100%100%100%100%

This comment was marked as resolved.

@shouze
shouze merged commit 29c46b0 into main Oct 28, 2026
9 checks passed
@shouze
shouze deleted the shouze-bun-native-tooling branch October 28, 2026 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Replace standalone oxfmt and oxlint with Bun 1.4.4 native tooling

2 participants