Side effects from `bun run format` (prettier 3.8) and `bun run build`
(Next 16) that I missed in the prior commit:
- web/components/ui/badge.tsx, web/components/ui/button.tsx: prettier 3.8
inlines short interface `extends` lists onto a single line.
- web/tsconfig.json: Next 16's build step auto-modernizes tsconfig:
`jsx: "preserve"` → `jsx: "react-jsx"` and reformats `lib`/`paths`
arrays to multi-line. Build is identical either way; committing the
modernized shape so subsequent `next build` runs do not produce
spurious diffs.
Bumped via `bun update --latest` then resolved breakage from two
major-version jumps:
1. Next.js 15.5 → 16.2 + @next/eslint-plugin-next 16: dropped the
`flatConfig` namespace. Updated web/eslint.config.mjs to use
`nextPlugin.configs["core-web-vitals"]` per the new export shape.
2. lucide-react 0.553 → 1.x: lucide upstream removed all brand icons
(Github, etc.) — they are now expected to come from a separate brand
icon library. Pinned lucide-react at the last 0.x (0.577.0) for now;
migrating to a brand-icon library is tracked as a follow-up.
All other deps to latest:
- react/react-dom 19.2.4 → 19.2.6
- next-intl 4.8 → 4.11
- motion 12.35 → 12.38
- tailwind-merge 3.4 → 3.5
- geist 1.5 → 1.7
- @radix-ui/* unchanged (already latest within their ranges)
- @opennextjs/cloudflare 1.17 → 1.19.8
- @playwright/test 1.56 → 1.59
- @tailwindcss/postcss + tailwindcss 4.1 → 4.2.4
- @types/node 22 → 25.6
- @types/react 19 → 19.2.14
- eslint 9 → 10.3 (works because we now reference @next/eslint-plugin-next
configs directly, not eslint-config-next)
- eslint-plugin-prettier 5.5.4 → 5.5.5
- globals 16 → 17.6
- postcss 8.5.6 → 8.5.14
- prettier 3.6.2 → 3.8.3 (no formatting changes detected by --check)
- prettier-plugin-tailwindcss 0.6 → 0.8
- typescript 5.9.3 → 6.0.3
- typescript-eslint 8.56 → 8.59
- wrangler 4.71 → 4.90
Verified locally:
- bun install --frozen-lockfile: 685 packages, no errors
- bun run format:check: pass (no diffs after `bun run format`)
- bun run lint: pass
- bun run type-check: pass (TypeScript 6 + @types/node 25)
- bun run build: pass (Next 16 build, 21 static pages, all 4 locales)
- bunx opennextjs-cloudflare build: pass (.open-next/worker.js produced)
Note: Next 16 `build` log relabels the Middleware row to "Proxy
(Middleware)" — purely cosmetic, no behavior change.
Code-quality review flagged that web/AGENTS.md ANTI-PATTERNS section
asserts `.wrangler/` is gitignored, but the rule was missing from
web/.gitignore. Adding the rule alongside the other Cloudflare/Next
build-output rules so the doc and the file agree.
Imports the public marketing site previously living in
../oh-my-opencode-web. Independent of the npm plugin: own package.json,
bun.lock, tsconfig.json. Not included in the published package — root
files: array still only ships dist/, bin/, postinstall.mjs.
Stack:
- Next.js 15.5 App Router + RSC, deployed to Cloudflare Workers via
@opennextjs/cloudflare (build target .open-next/worker.js).
- Tailwind v4 + shadcn/ui primitives.
- next-intl with 4 locales (en/ja/ko/zh) under app/[locale]/.
- Playwright e2e tests under web/e2e/.
- Custom domains ohmyopenagent.com (primary) and ohmyopencode.org
(legacy alias) declared in web/wrangler.toml.
Source files were re-formatted via `bun run format` to bring them in
line with the existing .prettierrc (singleQuote: false). Functional code
unchanged.