Install
# Shell installer (any *nix)
curl -fsSL revund.dev/install.sh | sh
# Homebrew (macOS, linuxbrew)
brew install revund-dev/tap/revund
# npm
npm install -g @revund/cli
# Direct download
# https://revund.dev/download
See revund.dev/docs for full documentation.
Changelog
✨ Features
- feat: workers behind a universal gRPC contract — ts/php/ruby ship as standalone packages
- feat: PHP + Ruby sidecar foundations — php-worker (nikic/PHP-Parser) and ruby-worker (whitequark/parser) scaffolded with gRPC Health + Parse stub returning well-formed empty ParsedFile, mirroring ts-worker pattern; new proto packages (phpworker.proto, rubyworker.proto) + generated Go stubs; pkg/phpworker + pkg/rubyworker client packages with Dial/grpcClient/NopClient; lang.PHPParser + lang.RubyParser plug into the registry and return ErrUnavailable until a client is wired; passes.WithStructuralPHPWorker + WithStructuralRubyWorker thread live clients through to the architecture wrapper; AST traversal lands in the focused per-language follow-ups
- feat: PHP + Ruby join the structural layer — LangPHP/LangRuby constants, walker support for .php/.rb/.rake, per-language god-file thresholds (500 lines) with PSR-4 + Rails-autoload suggestions, Laravel + Rails framework profiles registered in DefaultRegistry; path-aware detectors fire today, ROADMAP captures the three-way fork (sidecar / WASM tree-sitter / CGO tree-sitter) for AST-level coverage in a focused follow-up
- feat: ship Vue / Svelte / Astro / Solid framework profiles + IsSingleFileComponent shortcut so SFC frameworks get MisplacedComponent findings via path alone (no .vue/.svelte/.astro parsers needed yet); MultipleComponentsInFile correctly skips SFCs; walker now retains .vue/.svelte/.astro files in the RepoMap as LangOther; 5 of 7 major frontend frameworks now first-class with one file per framework
- feat: framework-agnostic seam for structural detectors — new pkg/structural/framework with Profile interface + ReactProfile + RepoSignals auto-detection (package.json + sentinel files + extension fallback), RepoMap exposes active profiles, MultipleComponentsInFile and MisplacedComponent now consult profiles instead of hardcoded React rules; adding Vue/Svelte/Angular/Solid/Astro/Qwik is now one file per framework with zero detector changes
Full documentation: https://revund.dev/docs Service status: https://revund.dev/status Report an issue: https://github.com/revund-dev/revund-cli/issues