Skip to content

Improved DX/Tooling#36

Open
arxbombus wants to merge 15 commits into
ilyaux:masterfrom
arxbombus:chore/dx-tooling
Open

Improved DX/Tooling#36
arxbombus wants to merge 15 commits into
ilyaux:masterfrom
arxbombus:chore/dx-tooling

Conversation

@arxbombus

@arxbombus arxbombus commented May 5, 2026

Copy link
Copy Markdown
Contributor

Improved DX / Tooling

Summary

This PR modernizes the project’s local developer workflow and CI tooling around a single primary task runner, stronger frontend/backend quality gates, and repo-managed commit hooks.

The main goals of this change are:

  • make local setup and day-to-day commands easier to discover
  • standardize formatting and linting for both frontend and backend code
  • make CI reflect the same toolchain and checks used locally
  • replace older ad hoc task-runner entrypoints with the new workflow
  • changed pinned Node version from 20 to 22.22.2 LTS because 20 is EOL

What Changed

1. mise as the primary task runner

Added:

This introduces pinned project tools and named tasks for:

  • setup
  • dev
  • frontend / frontend-wails
  • build / run
  • wails / wails-run
  • cross
  • test / test:wails
  • vet
  • lint
  • format
  • format:check
  • check

Tool versions are now pinned in repo config, including:

  • Go 1.25.4
  • Node 22.22.2
  • golangci-lint 2.12.1
  • lefthook
  • git-sumi

The task surface was also aligned with the previous build behavior so the new workflow preserves existing build semantics like:

  • version injection via git describe
  • .env loading for build-related tasks
  • web and Wails build variants
  • cross-compilation targets

2. Frontend tooling moved to Biome

Added:

Updated:

Frontend tooling now uses Biome for:

  • formatting
  • formatting checks
  • linting

Related npm scripts were added/updated so mise can call them directly.

This also came with frontend-wide formatting normalization so the new formatter starts from a consistent baseline.

3. Backend linting now includes go vet and golangci-lint

Added:

Backend checks now include:

  • gofmt
  • go vet
  • golangci-lint

The golangci-lint config was based on a stricter community baseline and then adapted to fit this repo’s current style and rollout needs, including:

  • keeping gofmt as the active Go formatter
  • disabling some stricter or noisier first-rollout rules
  • keeping a stronger baseline than just the defaults

4. Git hooks are now managed by lefthook

Added:

Hooks now cover:

  • pre-commit
    • frontend format check
    • frontend lint
    • Go formatting check
    • backend lint (go vet + golangci-lint)
  • commit-msg
    • git-sumi

git-sumi is configured for:

  • Conventional Commits
  • imperative commit descriptions
  • commit header/body length limits

5. VS Code recommendations and defaults added

Added:

These changes recommend and configure:

  • Biome
  • Tailwind support
  • TypeScript error helpers
  • the mise VS Code extension

Editor defaults now prefer Biome for supported frontend-related file types and enable Biome-driven format/code actions on save.

6. CI was updated to reflect the new tooling

Updated:

CI changes include:

  • using mise-action for the shared toolchain in the main quality gate
  • using setup-biome for frontend formatting/lint checks
  • adding a dedicated golangci-lint job via the official action
  • keeping Go tests and the engine coverage gate
  • aligning the release workflow’s Node version with the repo’s new pinned Node version (22.22.2)

7. Documentation was updated

Updated:

Docs now describe:

  • mise as the primary task runner
  • the new setup flow
  • the new dev/build/test/lint/format commands
  • the current backend/frontend testing reality

Notably:

  • README’s “Build From Source” flow now shows how to build and then run the built app
  • CONTRIBUTING reflects the mise-first contributor workflow

8. Deprecated task-runner entrypoints are removed

Removed / deprecated:

  • Makefile
  • make.ps1

The intent of this PR is that mise becomes the single first-class task interface going forward.

9. Miscellaneous repo updates

Updated:

This PR also stops ignoring .vscode/ so repo-scoped editor recommendations/settings can be tracked.

Current Workflow After This PR

Typical local flow becomes:

mise install
mise run setup
mise run dev

Common checks:

mise run format
mise run format:check
mise run vet
mise run lint
mise run check
mise run test

Build flows:

mise run build
mise run run
mise run wails
mise run wails-run
mise run cross

Testing / Verification Notes

  • Backend tests already existed and continue to run via go test ./...
  • The frontend still does not have a dedicated test suite
  • Frontend quality gates are currently:
    • build
    • Biome format checks
    • Biome lint checks

Migration Notes

  • Any prior make / make.ps1 workflow should be considered replaced by mise
  • Contributors will need mise installed locally
  • Hook-driven commits now depend on the new hook/tooling stack being available in the user environment

Follow-Up Areas To Explore

This PR intentionally does not try to settle every tooling choice permanently. There are still a few areas worth revisiting after the new baseline has had some real usage:

  • pnpm or bun instead of npm

    • The project currently stays on npm to keep the migration surface smaller.
    • A later pass could evaluate whether pnpm or bun would improve install speed, lockfile behavior, workspace ergonomics, or CI performance.
  • Taskfile instead of mise for task orchestration

    • This PR uses mise for both tool version management and task running.
    • A future pass could revisit whether it is cleaner to keep mise for tool/runtime management while moving task orchestration to Taskfile.
  • Additional frontend test tooling

    • The frontend still has no dedicated automated test suite.
    • Once the current DX baseline settles, it may be worth exploring a proper frontend test layer rather than relying only on build, format, and lint gates.

Comment thread internal/api/server.go

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixes platform gap for wails:

@arxbombus
arxbombus force-pushed the chore/dx-tooling branch from 94624f9 to d01648d Compare May 5, 2026 09:06
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