Skip to content

feat: add ESLint, Prettier, pin bun, and gate CI on lint + format#167

Merged
sshdopey merged 4 commits into
Heliobond:mainfrom
Jayy4rl:feat/lint-format-ci
Jun 29, 2026
Merged

feat: add ESLint, Prettier, pin bun, and gate CI on lint + format#167
sshdopey merged 4 commits into
Heliobond:mainfrom
Jayy4rl:feat/lint-format-ci

Conversation

@Jayy4rl

@Jayy4rl Jayy4rl commented Jun 29, 2026

Copy link
Copy Markdown

Closes #31 — ESLint with next/core-web-vitals and TypeScript rules Closes #32 — Prettier (semi:false, singleQuote, trailingComma:all, printWidth:100) Closes #33 — CI gates on lint and format:check after build/typecheck Closes #34 — Pin bun to 1.2.4 in CI; record version in CONTRIBUTING.md

New files:

  • eslint.config.mjs — flat-config extending next/core-web-vitals + next/typescript
  • .prettierrc — matches existing code style
  • .prettierignore — excludes .next, public, lock files

package.json: adds lint, format, format:check scripts and four new devDeps
(@eslint/eslintrc, eslint, eslint-config-next, prettier)

ESLint violations resolved:

  • Unused vars removed (AmountInput.test.tsx, WalletProvider.test.ts, creator/page.tsx)
  • react-hooks/set-state-in-effect suppressed with eslint-disable-next-line where the pattern is intentional (hydration guard, localStorage restore, capability probe)
  • react-hooks/refs suppressed for the itemRefs reset-before-render pattern in TopBar

Prettier ran --write across all src/, e2e/, and root config files.

Note: bun.lock was not regenerated (bun unavailable locally). CI uses bun install (without --frozen-lockfile) so bun resolves new packages on first run. Please commit the updated bun.lock after this PR merges.

Summary

Linked issue

Closes #

Type of change

  • Bug fix
  • Feature
  • Localization (i18n)
  • Accessibility
  • Smart contract / on-chain wiring
  • Docs / chore

Screenshots / screencast

Checklist

  • Tied to an accepted issue (Closes #…)
  • bun run build passes locally (builds + type-checks)
  • Follows the design system — token CSS vars, sentence case, mono numerals, deltas carry sign + arrow, no emoji, no hardcoded colours
  • User-facing strings added to both messages/en.json and messages/fr.json (if any copy changed)
  • Accessible — keyboard operable, visible focus, reduced-motion respected
  • No secrets committed
  • Docs updated where relevant

Closes Heliobond#31 — ESLint with next/core-web-vitals and TypeScript rules
Closes Heliobond#32 — Prettier (semi:false, singleQuote, trailingComma:all, printWidth:100)
Closes Heliobond#33 — CI gates on lint and format:check after build/typecheck
Closes Heliobond#34 — Pin bun to 1.2.4 in CI; record version in CONTRIBUTING.md

New files:
- eslint.config.mjs  — flat-config extending next/core-web-vitals + next/typescript
- .prettierrc        — matches existing code style
- .prettierignore    — excludes .next, public, lock files

package.json: adds lint, format, format:check scripts and four new devDeps
  (@eslint/eslintrc, eslint, eslint-config-next, prettier)

ESLint violations resolved:
- Unused vars removed (AmountInput.test.tsx, WalletProvider.test.ts, creator/page.tsx)
- react-hooks/set-state-in-effect suppressed with eslint-disable-next-line where
  the pattern is intentional (hydration guard, localStorage restore, capability probe)
- react-hooks/refs suppressed for the itemRefs reset-before-render pattern in TopBar

Prettier ran --write across all src/, e2e/, and root config files.

Note: bun.lock was not regenerated (bun unavailable locally). CI uses
`bun install` (without --frozen-lockfile) so bun resolves new packages on first
run. Please commit the updated bun.lock after this PR merges.
@Jayy4rl Jayy4rl requested a review from dadadave80 as a code owner June 29, 2026 08:21
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

@devjayy43 is attempting to deploy a commit to the David Dada's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jun 29, 2026

Copy link
Copy Markdown

@Jayy4rl Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

OracleForms.test.tsx had apy/category/description/risk (not on RegistryEntry)
and was missing the required `type` field from Project.

RegistryTable.test.tsx had description/irr/tenor/sharePrice/poolShare/tags/
highlights/currency — none are in Project or RegistryEntry, and none were
used by the test assertions.

Stripping the extraneous fields fixes the four TS2353 errors that broke
`bun run typecheck` in CI.
next lint in Next.js 16 treats the subcommand name as a directory path,
producing "Invalid project directory provided, no such directory: .../lint".
Using eslint . directly is equivalent and avoids the CLI parsing bug.

Also name the default export in eslint.config.mjs to silence the
import/no-anonymous-default-export warning.
Initial run only targeted src/**/*.{ts,tsx} and root configs.
CSS, markdown, YAML, and JSON files were missed. Running
prettier --write . covers all 21 previously unformatted files.
@sshdopey sshdopey merged commit 2c4fc26 into Heliobond:main Jun 29, 2026
1 of 2 checks passed
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.

Pin the bun version in CI Run lint and format checks in CI Add Prettier and a format check Add ESLint with the Next.js config and fix violations

3 participants