Skip to content

chore: add dependency-update automation (Renovate + Socket) and refresh outdated deps - #64

Open
lenucksi wants to merge 4 commits into
shekohex:mainfrom
lenucksi:chore/deps-and-supply-chain
Open

lenucksi wants to merge 4 commits into
shekohex:mainfrom
lenucksi:chore/deps-and-supply-chain

Conversation

@lenucksi

Copy link
Copy Markdown
Contributor

Context

There wasn't any dependency-update automation set up here yet, so the tree had drifted a fair
bit: bun audit reported 23 advisories (15 high) across the build/test toolchain, and several
packages were well behind current releases (@opencode-ai/plugin 1.3 → 1.18, plus vite,
react, jsdom, @playwright/test, @biomejs/biome, …).

Rather than leave that as a one-off cleanup, this PR sets up ongoing automation and
refreshes the backlog in the same pass, so keeping things current becomes low-effort from here on.

What this does

  • Renovate (renovate.json) — weekly schedule, grouped update PRs (@opencode-ai/*,
    vite, test tooling, type definitions, dev non-majors), GitHub Actions with pinned digests,
    and lockfile maintenance.
  • Socket for GitHub (socket.yml) — supply-chain / malware checks on dependency-changing
    pull requests, plus the dependency-overview comment.
  • Dependency refresh — within-range security fixes, and major bumps: vite 8,
    @vitejs/plugin-react 6, react 19, jsdom 30, @biomejs/biome 2.5,
    @playwright/test / playwright-core 1.63, @opencode-ai/* 1.18.

⚠️ One step that needs the repo owner

The committed configs are inert on their own — the apps have to be installed on the GitHub
account, which can't be done from a pull request:

Once enabled, renovate.json and socket.yml take effect. This is offered as a suggestion —
happy to switch to a different setup (e.g. Dependabot, or a self-hosted Renovate Action) if
you'd prefer.

Notes

  • The @opencode-ai/* bump to 1.18 changes the tool API slightly (ToolResult is now
    string | { output }), which the affected test now handles; the Bun websocket open handler
    no longer returns the boolean from subscribe.
  • TypeScript intentionally stays on 5.x — the package declares typescript: ^5 as a peer
    dependency, so a TS 7 jump would affect consumers and belongs in its own PR.

Verification

  • bun audit: no vulnerabilities found
  • bun run format, bun run lint, bun run typecheck, bun run build:prod: pass
  • bun test: passes apart from a few pre-existing failures that also occur on main
    (unrelated to this change)
  • Manual UI smoke check (React 19 / Vite 8)

Adds automated dependency updates: weekly schedule, grouped PRs for the
opencode-ai packages, vite, test tooling, type definitions and dev
non-majors, pinned GitHub Actions digests, and lockfile maintenance.
Enables supply-chain/malware checks on dependency-changing pull requests
and the dependency overview comment. The Socket for GitHub app still has
to be installed on the repository for this to take effect.
Runs `bun audit fix` + `bun update`: 23 advisories (15 high) resolved
within existing ranges; only a low-severity esbuild dev-server advisory
remains (addressed by the vite 8 bump in the next commit).

Adapts to the APIs pulled in by the range refresh:
- @opencode-ai/plugin 1.18 returns `ToolResult` (string | { output }) from
  tool execute, so the pty-spawn test narrows before asserting.
- Bun's websocket `open` handler must return void; `ws.subscribe` returns
  boolean, so the handler no longer returns it.

Also aligns engines.opencode with the plugin version floor (>=1.18.31).
- vite 8, @vitejs/plugin-react 6
- react 19 + @types/react / @types/react-dom 19
- jsdom 30 + @types/jsdom 30
- @biomejs/biome 2.5, @playwright/test + playwright-core 1.63

Also applies the new biome 2.5 `useOptionalChain` suggestions it flagged.
TypeScript stays on 5.x because the package declares `typescript: ^5` as a
peer dependency for consumers.

All of these are devDependencies, so there is no consumer-facing break.
Verified: `bun audit` clean, build, typecheck, lint and tests pass (only
the pre-existing `main` test failures remain).
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.

1 participant