{"id":50363881,"url":"https://github.com/wastelandsys/nodiffier","last_synced_at":"2026-05-30T03:00:57.468Z","repository":{"id":358525897,"uuid":"1237117519","full_name":"WastelandSYS/noDIFFier","owner":"WastelandSYS","description":"Lightweight Linux terminal tool for safely applying AI-generated unified diff patches using git apply.","archived":false,"fork":false,"pushed_at":"2026-05-29T22:37:55.000Z","size":83,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T23:14:46.501Z","etag":null,"topics":["ai-tools","automation","chatgpt","cli","codex","developer-tools","diff","git","git-apply","kali-linux","linux","linux-tools","patch","productivity","python","raspberry-pi","terminal","terminal-tool","unified-diff","workflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WastelandSYS.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":"2026-05-12T22:25:32.000Z","updated_at":"2026-05-29T22:38:01.000Z","dependencies_parsed_at":"2026-05-30T03:00:40.266Z","dependency_job_id":null,"html_url":"https://github.com/WastelandSYS/noDIFFier","commit_stats":null,"previous_names":["wastelandsys/nodiffier"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/WastelandSYS/noDIFFier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WastelandSYS%2FnoDIFFier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WastelandSYS%2FnoDIFFier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WastelandSYS%2FnoDIFFier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WastelandSYS%2FnoDIFFier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WastelandSYS","download_url":"https://codeload.github.com/WastelandSYS/noDIFFier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WastelandSYS%2FnoDIFFier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33678271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"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":["ai-tools","automation","chatgpt","cli","codex","developer-tools","diff","git","git-apply","kali-linux","linux","linux-tools","patch","productivity","python","raspberry-pi","terminal","terminal-tool","unified-diff","workflow"],"created_at":"2026-05-30T03:00:32.526Z","updated_at":"2026-05-30T03:00:57.463Z","avatar_url":"https://github.com/WastelandSYS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- ========================================================= --\u003e\n\u003c!--                        HERO IMAGE                         --\u003e\n\u003c!-- ========================================================= --\u003e\n\n\u003cimg width=\"1983\" height=\"793\" alt=\"noDIFFier Image May 13, 2026, 01_44_36 PM\" src=\"https://github.com/user-attachments/assets/f10e1bfa-c905-4703-a2d3-c1070266eaa5\" /\u003e\n\n# noDIFFier\n\nAn AI-assisted patch workflow tool for Linux terminals. noDIFFier validates and applies Codex-generated unified diffs directly to your project, then immediately waits for the next patch so development never has to stop.\n\n---\n\n# FEATURES\n\n### v0.5.0 Workflow Improvements\n\n- Boxed session summary with patches applied, files modified, backups created, failures, validation failures, and session duration\n- Lightweight patch history logging under `.nodiffier-history/` after every successful patch\n- Rollback helpers for listing backups, restoring a chosen snapshot, restoring the newest backup, and interactive rollback\n- Dry run mode that validates patch safety, checks `git apply --check`, lists affected files, and makes no changes\n- Patch preview prompts that show only affected file paths before applying changes\n- Dirty Git worktree warning with `--force` / `--allow-dirty` overrides\n- Git root detection when launched from a repository subdirectory, while preserving patch-file paths relative to the launch directory\n- Batch patch mode for applying multiple `.patch` / `.diff` files sequentially with per-patch results\n\n\n### AI Patch Workflow\n\n- Paste Codex-generated unified diffs directly into the terminal\n- Apply multiple patches continuously within a single session\n- No manual patch files required\n- No manual file editing required\n- Designed specifically for AI-assisted development workflows\n\n### Safe Patch Application\n\n- Validates patches using `git apply --check`\n- Blocks unsafe paths, absolute paths, and directory traversal attempts\n- Creates automatic backups before modifying files\n- Warns before applying patches over uncommitted Git changes\n- Shows a concise patch preview before changes are applied\n- Supports dry runs, rollback from backups, and patch history logging\n- Clear success and failure reporting\n- Detects the nearest Git repository root while still allowing current-directory mode\n\n### Linux Terminal Tooling\n\n- Applies unified diffs from pasted terminal input or patch files\n- Works directly in your current directory with no hardcoded target folder\n- Provides both `noDIFFier` and `nodiffier` global launcher commands\n- Installer avoids `sudo pip` and Python package mutation\n- Designed for Linux environments including Raspberry Pi OS, Kali, Debian, and Ubuntu\n- Minimal footprint: one Python tool script plus install/uninstall scripts\n\n---\n\n# SCREENSHOTS\n\n\n\u003cimg width=\"950\" height=\"500\" alt=\"nodiffierMENU\" src=\"https://github.com/user-attachments/assets/24df4210-f7c1-4389-950a-a7e808f90bcd\" /\u003e\n\n---\n\n\n# INSTALLATION\n\n```bash\ngit clone https://github.com/WastelandSYS/noDIFFier.git\ncd noDIFFier\nchmod +x install.sh nodiffier.py\nsudo ./install.sh\n```\n\nLaunch with:\n\n```bash\nnodiffier\n```\n\n---\n\n# UNINSTALLATION\n\n```bash\ncd noDIFFier\nchmod +x uninstall.sh\nsudo ./uninstall.sh\n```\n\nOptional manual cleanup:\n\n```bash\nsudo rm -f /usr/local/bin/nodiffier\nsudo rm -f /usr/local/bin/noDIFFier\nsudo rm -rf /usr/local/share/nodiffier\n```\n\nThe uninstaller removes the global `nodiffier` and `noDIFFier` shortcuts and the installed `/usr/local/share/nodiffier` directory.\n\n---\n\n# USAGE\n\nDefault launch:\n\n```bash\nnodiffier\n```\n\nPaste mode (from Codex chat diff):\n\n```bash\ncd /path/to/your/project\nnodiffier\n# paste full diff, then press CTRL+D\n```\n\nPrimary AI-assisted workflow:\n\n```text\ncd /path/to/your/project\nnodiffier\npaste Codex-generated patch\nCTRL+D\npatch is validated and applied\npaste next patch\nCTRL+D\npatch is validated and applied\n```\n\nContinue pasting patches until the development task is complete. noDIFFier keeps the session open after each patch, so you can apply a sequence of AI-generated changes without restarting the application.\n\nFile mode examples:\n\n```bash\ncd /path/to/your/project\nnodiffier changes.patch\nnodiffier changes.diff\nnodiffier *.patch\n```\n\nDry run mode validates a patch and lists affected files without changing anything:\n\n```bash\nnodiffier --dry-run changes.patch\n```\n\nRollback helpers use the existing `.nodiffier-backups/` snapshots and never delete backup history automatically:\n\n```bash\nnodiffier --list-backups\nnodiffier --rollback-last\nnodiffier --rollback\nnodiffier --restore-backup 20260529T120000Z\n```\n\nWorkflow safety prompts can be bypassed for trusted automation:\n\n```bash\nnodiffier --yes changes.patch\nnodiffier --force changes.patch\nnodiffier --allow-dirty changes.patch\n```\n\nSuccessful patch applications are logged under `.nodiffier-history/` with the timestamp, patch content, affected files, and result status for a lightweight audit trail.\n\nAlias command:\n\n```bash\nnoDIFFier\n```\n\nVersion check:\n\n```bash\nnodiffier --version\n```\n\n# COMPATIBILITY\n\nDesigned primarily for Linux systems.\n\nTested/targeted on:\n\n- Raspberry Pi OS\n- Kali Linux\n- Debian\n- Ubuntu\n\nNotes:\n\n- Requires `git` for patch validation and application.\n- Uses system Python 3 without installing global Python packages.\n- Avoids `externally-managed-environment` issues by not using `sudo pip`.\n- Defaults to the nearest Git repository root when launched from a subdirectory, unless you decline the prompt.\n\n---\n\n# WHY NODIFFIER?\n\nAI coding assistants can generate useful unified diffs, but applying each patch manually adds repetitive work to the development loop.\n\nTraditional workflow:\n\n```text\nCopy patch\nCreate patch file\nRun patch command\nVerify changes\nRepeat\n```\n\nnoDIFFier workflow:\n\n```text\nPaste patch\nCTRL+D\nPatch applied\n\nPaste next patch\nCTRL+D\nPatch applied\n\nPaste next patch\nCTRL+D\nPatch applied\n```\n\nThe goal is to remove friction from AI-assisted development so developers can focus on building instead of managing patch files and repeating terminal commands. noDIFFier turns patch application into a continuous workflow: launch it once inside the project directory, paste each Codex-generated diff, press `CTRL+D`, review the result, and continue with the next patch.\n\nThe tool focuses on:\n\n- rapid AI-generated patch application\n- safe patch preflight checks\n- minimal setup complexity\n- Linux-friendly installation\n- predictable current-directory behavior\n- practical Codex and AI coding assistant workflows\n\n---\n\n# LICENSE\n\nGNU GPL v3 License\n\n---\n\n# AUTHOR\n\n[WastelandSYS](https://github.com/WastelandSYS)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwastelandsys%2Fnodiffier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwastelandsys%2Fnodiffier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwastelandsys%2Fnodiffier/lists"}