Skip to content

Rewrite CLI in Rust (clap + ratatui), move releases to cargo-dist - #2

Merged
nklmilojevic merged 1 commit into
mainfrom
rust-conversion
Aug 18, 2026
Merged

nklmilojevic merged 1 commit into
mainfrom
rust-conversion

Conversation

@nklmilojevic

Copy link
Copy Markdown
Contributor

Summary

  • Full rewrite of the Go CLI in Rust: all 22 command groups (subscriber, group, campaign, automation, form, field, segment, webhook, timezone, 8 e-commerce groups, account, auth, profile, completion, version) with identical subcommands, flags, defaults, output columns, and messages
  • ratatui dashboard replacing bubbletea: sidebar, five views, detail/help overlays, vim keybindings, non-blocking background fetches, panic-safe terminal restore
  • Full OAuth PKCE browser flow (localhost:19821 callback), multi-profile YAML config with auto token refresh, retry/rate-limit HTTP client with verbose logging
  • Releases move from GoReleaser to cargo-dist: native per-platform builds, shell/PowerShell installers, Homebrew formula (replaces cask) published to mailerlite/homebrew-tap, flake.nix hash update as post-announce job
  • Version is now authoritative in Cargo.toml (tag must match); build.rs stamps git commit/date
  • CI quality gates (fmt, clippy -D warnings, build, test) now run on pushes to main and PRs

Breaking / operational changes

  • Homebrew: cask -> formula; existing cask users need brew uninstall --cask mailerlite && brew install mailerlite/tap/mailerlite (cask already removed from tap)
  • macOS binaries are no longer signed/notarized (cargo-dist has no macOS signing); QUILL_* secrets unused
  • nix run and brew install are broken until the first v2.0.0 tag publishes artifacts with the new names
  • --json prints the raw API response body (higher fidelity than the Go SDK-struct re-marshal)

Test plan

  • cargo build + clippy --all-targets: zero warnings
  • Automated parity diff vs the Go binary: all 20 command groups and every leaf subcommand's flags match exactly
  • Live API smoke: auth status, subscriber count/list, group list --json, --verbose logging, group create/delete round-trip
  • Dashboard driven in a real PTY: load, view switch, help overlay, clean exit
  • dist plan + local dist build: tarball layout matches flake sourceRoot; extracted binary works against live API
  • Workflows pass action-validator; flake evaluates
  • First v2.0.0 tag: verify release artifacts, tap formula, and update-flake bot commit

@nklmilojevic
nklmilojevic merged commit 134e558 into main Aug 18, 2026
3 checks passed
@nklmilojevic
nklmilojevic deleted the rust-conversion branch August 18, 2026 10:44
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