Skip to content

Rewrite backend in Rust#1

Merged
imfing merged 14 commits into
mainfrom
feat/rust-migration
Jun 6, 2026
Merged

Rewrite backend in Rust#1
imfing merged 14 commits into
mainfrom
feat/rust-migration

Conversation

@imfing

@imfing imfing commented Jun 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • replace the Go backend with a Rust CLI/server using clap, axum, git2, notify, and rust-embed
  • preserve the existing React frontend while embedding built web assets into the Rust binary
  • port local comments, GitHub PR/comment APIs, watcher/SSE, config, local/branch diff routes, and CLI flows
  • remove Go sources and GoReleaser wiring, then migrate CI/release packaging to Cargo-based builds and archives

Validation

  • pnpm test
  • cargo build --release --locked

Notes

  • opened as draft because this is a broad migration and should get focused review before merge

imfing added 7 commits June 6, 2026 16:44
Delete the Go sources (cmd/, internal/), go.mod/go.sum, the GoReleaser
config, the webassets embed package, and the web/go.mod module marker now
that the Rust binary is the implementation.
Replace the Go/GoReleaser pipeline with cargo-based workflows: CI runs
fmt, clippy, and a cross-platform test matrix (web assets built once and
shared via artifact for the rust-embed compile-time dependency); release
builds native binaries across linux/darwin/windows x amd64/arm64, gates
on fmt+clippy+test, publishes archives with checksums, and updates the
Homebrew cask. Align Cargo.toml to 0.3.0 so the tag-version guard matches
the current release line; drop the Go section from .gitignore.
State the Rust + pnpm build requirements instead of Go, and remove the
gopher banner image (and its now-unused asset).
Add --locked to CI clippy and test so a stale Cargo.lock fails PR CI
instead of only failing under the release build, and add a snapshot job
that runs cargo build --release --locked plus the archive packaging
steps on linux and windows, mirroring the release workflow so packaging
regressions surface before a tag is pushed.
@imfing imfing force-pushed the feat/rust-migration branch from 7ba1cac to ad3ae06 Compare June 6, 2026 16:26
@imfing imfing marked this pull request as ready for review June 6, 2026 17:55
@imfing imfing merged commit 6a3fda2 into main Jun 6, 2026
8 checks passed
@imfing imfing deleted the feat/rust-migration branch June 6, 2026 17:55
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