{"id":31146332,"url":"https://github.com/docspring/renamify","last_synced_at":"2025-09-18T15:09:38.694Z","repository":{"id":309316441,"uuid":"1035802640","full_name":"DocSpring/renamify","owner":"DocSpring","description":"Smart search \u0026 replace for code and files with case-aware transformations and built-in undo/redo.","archived":false,"fork":false,"pushed_at":"2025-09-02T14:50:35.000Z","size":3043,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-15T09:40:31.485Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DocSpring.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-11T05:44:16.000Z","updated_at":"2025-09-02T14:14:30.000Z","dependencies_parsed_at":"2025-08-29T13:35:59.887Z","dependency_job_id":"97e8184c-bb2d-4276-a959-1b0d276eb88a","html_url":"https://github.com/DocSpring/renamify","commit_stats":null,"previous_names":["docspring/refaktor","docspring/renamify"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/DocSpring/renamify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DocSpring%2Frenamify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DocSpring%2Frenamify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DocSpring%2Frenamify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DocSpring%2Frenamify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DocSpring","download_url":"https://codeload.github.com/DocSpring/renamify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DocSpring%2Frenamify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275788051,"owners_count":25528695,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-18T15:09:37.764Z","updated_at":"2025-09-18T15:09:38.676Z","avatar_url":"https://github.com/DocSpring.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/src/assets/logo-white-wordmark.svg\"\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"docs/src/assets/logo-wordmark.svg\"\u003e\u003cimg alt=\"Renamify logo\" src=\"docs/src/assets/logo-white-wordmark.svg\" height=\"32\" align=\"absmiddle\"\u003e\u003c/picture\u003e\n\nSmart search \u0026 replace for code and filenames with case-aware transformations and built-in undo/redo.\n\n[![CI](https://github.com/DocSpring/renamify/actions/workflows/ci.yml/badge.svg)](https://github.com/DocSpring/renamify/actions/workflows/ci.yml)\n[![E2E](https://github.com/DocSpring/renamify/actions/workflows/e2e.yml/badge.svg)](https://github.com/DocSpring/renamify/actions/workflows/e2e.yml)\n[![MCP](https://github.com/DocSpring/renamify/actions/workflows/mcp.yml/badge.svg)](https://github.com/DocSpring/renamify/actions/workflows/mcp.yml)\n[![VS Code](https://github.com/DocSpring/renamify/actions/workflows/vscode.yml/badge.svg)](https://github.com/DocSpring/renamify/actions/workflows/vscode.yml)\n[![Docs](https://github.com/DocSpring/renamify/actions/workflows/docs.yml/badge.svg)](https://docspring.github.io/renamify/)\n[![codecov](https://codecov.io/gh/DocSpring/renamify/graph/badge.svg)](https://codecov.io/gh/DocSpring/renamify)\n\n- **CLI tool** - Cross-platform with full Windows, macOS, and Linux support\u003cbr\u003e\n- **MCP server** - AI integrations for Claude, Cursor, and other MCP-compatible tools\u003cbr\u003e\n- **VS Code + Cursor extension** - Instant renaming without leaving your editor\u003cbr\u003e\n- **Written in Rust** - High performance and memory safety with \u003e90% code coverage\u003cbr\u003e\n- **Documentation** - Learn more at [docspring.github.io/renamify](https://docspring.github.io/renamify/)\n\n## Installation\n\n### Quick Install (macOS/Linux)\n\n```bash\ncurl -fsSL https://docspring.github.io/renamify/install.sh | sh\n```\n\n### From Source\n\n```bash\n# Using Cargo\ncargo install --git https://github.com/DocSpring/renamify\n\n# Or clone and build\ngit clone https://github.com/DocSpring/renamify\ncd renamify\ncargo build --release\n# Binary will be at ./target/release/renamify\n```\n\n### MCP Server\n\n```bash\nnpx @renamify/mcp-server\n```\n\nSee [MCP Server documentation](https://docspring.github.io/renamify/mcp/overview/) for Claude and Cursor setup.\n\n## Features\n\n- **Smart Case Conversion**: Automatically detects and converts between different case styles (snake_case, kebab-case, camelCase, PascalCase, SCREAMING_SNAKE_CASE, Train-Case, Title Case, dot.case, lowercase, UPPERCASE)\n- **Safe by default**: Plan → Review → Apply workflow prevents accidents\n- **Built-in undo/redo**: Full history tracking separate from git. No need to git stash or commit with `--no-verify` before renaming.\n- **File and directory renaming**: Rename everything in one atomic operation\n- **Respects ignore files**: Works with `.gitignore`, `.ignore`, `.rgignore`, `.rnignore`\n- **Cross-platform**: Full support for Linux, macOS, and Windows\n- **Line filtering**: Exclude matches on lines matching a regex pattern (e.g., skip comments, TODOs)\n\n## Quick Examples\n\n```bash\n# Preview changes before applying\nrenamify plan old_name new_name\n\n# Rename with automatic approval\nrenamify rename old_name new_name --yes\n\n# Undo the last rename\nrenamify undo\n\n# See what would change with different preview formats\nrenamify plan myProject betterName --preview table\nrenamify plan myProject betterName --preview diff\n\n# Exclude matches in comments and TODO lines\nrenamify plan old_name new_name --exclude-matching-lines '^//'\nrenamify plan old_name new_name --exclude-matching-lines '(TODO|FIXME)'\n\n# Skip renaming files and directories\nrenamify plan old_name new_name --no-rename-paths\n\n# Ignore ambiguous/mixed-case identifiers\nrenamify plan old_name new_name --ignore-ambiguous\n```\n\n## Demo\n\nWatch Renamify rename itself to `renamed_renaming_tool`, then use the renamed binary to change it back:\n\n```bash\n# Clone and build\ngit clone https://github.com/DocSpring/renamify\ncd renamify\ncargo build --release\n\n# Use renamify to rename itself to renamed_renaming_tool\n./target/release/renamify rename renamify renamed_renaming_tool --preview table\n\n# Rebuild with the new name\nrm -rf target\ncargo build --release\n\n# Now use renamed_renaming_tool to rename itself back to renamify!\n./target/release/renamed_renaming_tool rename renamed_renaming_tool renamify --preview table\n\n# Back to the original\nrm -rf target\ncargo build --release\n./target/release/renamify --help\n```\n\nThis demonstrates Renamify's power: it can rename entire projects including all code references, file names, and directory names - all while maintaining perfect consistency across different naming conventions.\n\n## Ignore Files\n\nRenamify respects various ignore files to skip files and directories during scanning:\n\n- `.gitignore` - Standard Git ignore patterns\n- `.ignore` - Generic ignore file (like ripgrep)\n- `.rgignore` - Ripgrep-specific ignore patterns\n- `.rnignore` - Renamify-specific ignore patterns\n\nYou can control how ignore files are handled using the `-u` flag:\n\n- Default: Respects all ignore files and skips hidden files\n- `-u`: Ignores `.gitignore` but respects other ignore files\n- `-uu`: Ignores all ignore files and shows hidden files\n- `-uuu`: Same as `-uu` plus treats binary files as text\n\nThe `.rnignore` file is useful when you want to exclude files specifically from renamify operations without affecting Git or other tools.\n\n## Versioning Policy\n\nRenamify follows [Semantic Versioning](https://semver.org/):\n\n- **MAJOR** version for incompatible API changes\n- **MINOR** version for backward-compatible functionality additions\n- **PATCH** version for backward-compatible bug fixes\n\n### Component Compatibility\n\nThe MCP server and VS Code extension depend on the CLI and must maintain version compatibility:\n\n- **Major version**: Must match the CLI major version exactly\n- **Minor version**: Must be ≤ CLI minor version (can use older features, not newer ones)\n- **Patch version**: Independent, can be any value\n\n#### Examples\n\n- CLI `2.3.1` → MCP `2.0.5` ✅ (major matches, minor 0 ≤ 3)\n- CLI `2.3.1` → MCP `2.3.9` ✅ (major matches, minor 3 ≤ 3)\n- CLI `2.3.1` → MCP `2.4.0` ❌ (minor 4 \u003e 3, might use unavailable features)\n- CLI `2.3.1` → MCP `3.0.0` ❌ (major version mismatch)\n\n### Version Check\n\nThe CLI provides version information via:\n\n```bash\nrenamify version --output json\n# {\"name\":\"renamify\",\"version\":\"0.1.0\"}\n```\n\nBoth the MCP server and VS Code extension verify CLI compatibility on startup and will fail gracefully if the CLI version doesn't meet requirements.\n\n## Development\n\n### Quick Setup\n\n```bash\n# Install all development dependencies (Rust, tools, etc.)\n./scripts/dev-setup.sh\n```\n\n### Prerequisites\n\n- Rust 1.80.1 or later (installed by dev-setup.sh)\n- cargo (included with Rust)\n\n### Building\n\n```bash\ncargo build --release\n```\n\n### Running Tests\n\n```bash\ncargo test\n```\n\n### Debugging\n\nFor debugging tokenization issues, you can set the `DEBUG_TOKENIZE` environment variable to see detailed output of how Renamify parses identifiers into tokens:\n\n```bash\nDEBUG_TOKENIZE=1 cargo test test_name\n```\n\nThis is particularly useful when troubleshooting issues with case conversions or acronym handling.\n\n### Code Coverage\n\nThe `renamify-core` library maintains comprehensive test coverage:\n\n```bash\ncargo install cargo-llvm-cov\ncargo llvm-cov --package renamify-core --html\n# Open target/llvm-cov/html/index.html to view the report\n```\n\n### Linting \u0026 Formatting\n\nWe use automated checks to maintain code quality:\n\n```bash\n# Format code\ncargo fmt --all\n\n# Run clippy\ncargo clippy --all-targets --all-features\n\n# Check shell scripts\n./scripts/shellcheck.sh\n\n# Or let git hooks handle it automatically\ngit commit  # lefthook will run checks pre-commit\n```\n\n### Contributing\n\n- **Documentation**: Help improve our docs, add more examples, fix any inaccuracies\n- **Bug Reports**: Found an issue? Please [report it](https://github.com/DocSpring/renamify/issues)!\n- PRs welcome! All checks must pass (formatting, linting, tests)\n- We use [lefthook](https://github.com/evilmartians/lefthook) for git hooks\n\n## License\n\nMIT License - Copyright (c) 2025 DocSpring\n\n---\n\n## Created By\n\n\u003ca href=\"https://docspring.com\"\u003e\n  \u003cimg src=\"https://docspring.com/assets/logo-text-1e09b5522ee8602e08f1e3c4851e1657b14bd49e2e633618c344b4dc23fcbf79.svg\" alt=\"DocSpring Logo\" width=\"200\"\u003e\n\u003c/a\u003e\n\nRenamify was created by [DocSpring](https://docspring.com)\n\nFill, sign, and generate PDFs at scale\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocspring%2Frenamify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdocspring%2Frenamify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocspring%2Frenamify/lists"}