{"_id":"@clase-programacion-avanzada/file-merger-tui","_rev":"3-43c8e0c1e016493b06e46239fbcba903","name":"@clase-programacion-avanzada/file-merger-tui","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@clase-programacion-avanzada/file-merger-tui","version":"1.0.0","keywords":["file-merger","tui","ai","chatgpt","gemini"],"license":"MIT","_id":"@clase-programacion-avanzada/file-merger-tui@1.0.0","maintainers":[{"name":"devmorav","email":"difemove@gmail.com"}],"homepage":"https://github.com/clase-programacion-avanzada/file-merger-tui#readme","bugs":{"url":"https://github.com/clase-programacion-avanzada/file-merger-tui/issues"},"bin":{"file-merger":"src/entrypoint.js"},"dist":{"shasum":"1f212490d77906a73c3912625ea90f3a4bf1b5e3","tarball":"https://registry.npmjs.org/@clase-programacion-avanzada/file-merger-tui/-/file-merger-tui-1.0.0.tgz","fileCount":10,"integrity":"sha512-/IXLMXjsQpJaXbuJEL6C27M7hgtunoLRVih/qPo4JbU6QMtX8bkmkCAe7+LRXH0+W9xJqkS9D6Wj6ObN6iGFdg==","signatures":[{"sig":"MEYCIQCvKDTHVJoSXC1FqdQ3X5NiZXR7jKEqqMwzIpqkMmGU3QIhAJIG5pEzW0B0BvzDdczcJ1NgflOvUmjm5AX4ZOQ6iEI3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24227},"type":"module","engines":{"node":">=26.4.0"},"gitHead":"6bec7fff008e58673ab6d6b773e756f48394c81d","scripts":{"lint":"eslint .","test":"node --experimental-ffi ./node_modules/vitest/vitest.mjs run","start":"node src/entrypoint.js","test:watch":"vitest","prepublishOnly":"npm test && npm run lint"},"_npmUser":{"name":"devmorav","email":"difemove@gmail.com"},"repository":{"url":"git+https://github.com/clase-programacion-avanzada/file-merger-tui.git","type":"git"},"_npmVersion":"11.17.0","description":"Merge project text files into one AI-friendly text file.","directories":{},"_nodeVersion":"26.5.1","dependencies":{"commander":"^14.0.0","picocolors":"^1.1.1","@opentui/core":"^0.4.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.8.0","vitest":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/file-merger-tui_1.0.0_1785453286086_0.8113773236530379","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@clase-programacion-avanzada/file-merger-tui","version":"1.0.1","keywords":["file-merger","tui","ai","chatgpt","gemini"],"license":"MIT","_id":"@clase-programacion-avanzada/file-merger-tui@1.0.1","maintainers":[{"name":"devmorav","email":"difemove@gmail.com"}],"homepage":"https://github.com/clase-programacion-avanzada/file-merger-tui#readme","bugs":{"url":"https://github.com/clase-programacion-avanzada/file-merger-tui/issues"},"bin":{"file-merger":"src/entrypoint.js"},"dist":{"shasum":"5f72416109279c565465b050756db562ddd7775b","tarball":"https://registry.npmjs.org/@clase-programacion-avanzada/file-merger-tui/-/file-merger-tui-1.0.1.tgz","fileCount":10,"integrity":"sha512-naJqkHIcDkmBDuUDRgJAeGude33hRnpBos8SaMC9/qKZhlR3NeSVHwXNi6lg6x+ODO8psvNw705uMQW6fXH7Bw==","signatures":[{"sig":"MEYCIQDMKqs47AenvWIvdVymJuYP/d2zVZ7CC4d6nMnfQN9cPgIhAKnTyxOdjkMVtK1leTtxgxA0txfaHcKteAUnp+F7IhyI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24227},"type":"module","engines":{"node":">=26.4.0"},"gitHead":"ea1db25cadb55e397addfdd4756027363fabb346","scripts":{"lint":"eslint .","test":"node --experimental-ffi ./node_modules/vitest/vitest.mjs run","start":"node src/entrypoint.js","test:watch":"vitest","prepublishOnly":"npm test && npm run lint"},"_npmUser":{"name":"devmorav","email":"difemove@gmail.com"},"repository":{"url":"git+https://github.com/clase-programacion-avanzada/file-merger-tui.git","type":"git"},"_npmVersion":"11.17.0","description":"Merge project text files into one AI-friendly text file.","directories":{},"_nodeVersion":"26.5.1","dependencies":{"commander":"^14.0.0","picocolors":"^1.1.1","@opentui/core":"^0.4.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.8.0","vitest":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/file-merger-tui_1.0.1_1785453571648_0.03046973805536579","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@clase-programacion-avanzada/file-merger-tui","version":"1.0.2","description":"Merge project text files into one AI-friendly text file.","license":"MIT","keywords":["file-merger","tui","ai","chatgpt","gemini"],"repository":{"type":"git","url":"git+https://github.com/clase-programacion-avanzada/file-merger-tui.git"},"bugs":{"url":"https://github.com/clase-programacion-avanzada/file-merger-tui/issues"},"homepage":"https://github.com/clase-programacion-avanzada/file-merger-tui#readme","type":"module","bin":{"file-merger":"src/entrypoint.js","file-merger-tui":"src/entrypoint.js"},"engines":{"node":">=26.4.0"},"publishConfig":{"access":"public"},"scripts":{"start":"node src/entrypoint.js","test":"node --experimental-ffi ./node_modules/vitest/vitest.mjs run","test:watch":"vitest","lint":"eslint .","prepublishOnly":"npm test && npm run lint"},"dependencies":{"@opentui/core":"^0.4.5","commander":"^14.0.0","picocolors":"^1.1.1"},"devDependencies":{"eslint":"10.8.0","vitest":"^3.2.4"},"gitHead":"ea1db25cadb55e397addfdd4756027363fabb346","_id":"@clase-programacion-avanzada/file-merger-tui@1.0.2","_nodeVersion":"26.5.1","_npmVersion":"11.17.0","dist":{"integrity":"sha512-cjtoHZDYoFHA7rA3M6IHOckG8OeGTovMiIox9F1VHCxZMwLCC5J5Br7keT+VAdoV/K0NIQ8mmopxqwhEEE4/Nw==","shasum":"a40e569378a068d629056e949213d4af6c852690","tarball":"https://registry.npmjs.org/@clase-programacion-avanzada/file-merger-tui/-/file-merger-tui-1.0.2.tgz","fileCount":10,"unpackedSize":24383,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAyymFWZl/uixIQlDCe5LMR4UB6SKwcGP0pAks9xyikpAiEAtLmbOoTJ6eKXMoMTRaLMdxjyvosaxxLg/GKZGMSDTWU="}]},"_npmUser":{"name":"devmorav","email":"difemove@gmail.com"},"directories":{},"maintainers":[{"name":"devmorav","email":"difemove@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/file-merger-tui_1.0.2_1785453665860_0.43184203497194873"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-30T23:14:45.924Z","modified":"2026-07-30T23:21:06.206Z","1.0.0":"2026-07-30T23:14:46.250Z","1.0.1":"2026-07-30T23:19:31.791Z","1.0.2":"2026-07-30T23:21:06.007Z"},"bugs":{"url":"https://github.com/clase-programacion-avanzada/file-merger-tui/issues"},"license":"MIT","homepage":"https://github.com/clase-programacion-avanzada/file-merger-tui#readme","keywords":["file-merger","tui","ai","chatgpt","gemini"],"repository":{"type":"git","url":"git+https://github.com/clase-programacion-avanzada/file-merger-tui.git"},"description":"Merge project text files into one AI-friendly text file.","maintainers":[{"name":"devmorav","email":"difemove@gmail.com"}],"readme":"# File Merger TUI\n\nFile Merger TUI creates one readable text file from a project’s text-based source and configuration files. It is intended for sharing a project with ChatGPT, Gemini, or another code assistant without manually copying every file.\n\n## Requirements\n\n- Node.js 26.4 or newer (required by OpenTUI’s native Node renderer and FFI)\n\n## Install and run\n\n```bash\nnpm install\nnpm start -- ./my-project --output context.txt\n```\n\nRun without arguments from a terminal to open the OpenTUI interface:\n\n```bash\nnpm start\n```\n\nThe launcher automatically enables OpenTUI’s required Node FFI flag. On older Node versions it prints an upgrade message instead of the lower-level OpenTUI error.\n\nIn the TUI, use the arrow keys and Enter to edit roots, output, extension rules, excluded directories, size limits, and symlink/default-exclusion toggles. Select **Save configuration** to write the current settings to `.file-merger.json` (or the path provided with `--config`). **Merge files** saves the configuration first, then writes the merged output. Select **Quit** to leave without writing.\n\n## CLI examples\n\n```bash\n# Merge the current project using safe defaults\nnpx --yes --package=@clase-programacion-avanzada/file-merger-tui file-merger .\n\n# Include only JavaScript and TypeScript files\nnpx --yes --package=@clase-programacion-avanzada/file-merger-tui file-merger src --include js,ts --output prompt-context.txt\n\n# Exclude tests and environment files\nnpx --yes --package=@clase-programacion-avanzada/file-merger-tui file-merger . --exclude test,fixtures --exclude-ext test.js,env\n\n# Preview the scan without writing a file\nnpx --yes --package=@clase-programacion-avanzada/file-merger-tui file-merger . --dry-run\n```\n\n## Configuration\n\nCopy `.file-merger.json.example` to `.file-merger.json` and edit it:\n\n```json\n{\n  \"roots\": [\".\"],\n  \"output\": \"merged-files.txt\",\n  \"includeExtensions\": [],\n  \"excludeExtensions\": [],\n  \"excludeDirectories\": [],\n  \"maxFileSizeBytes\": 1048576,\n  \"useDefaultExcludes\": true,\n  \"followSymlinks\": false\n}\n```\n\nCLI flags override config values, and config values override built-in defaults. Extensions may be written with or without a leading dot.\n\nBy default, `.git`, `node_modules`, `dist`, `build`, `coverage`, `.cache`, `.next`, `target`, and `vendor` are skipped. Binary files, invalid UTF-8 files, and files larger than 1 MiB are also skipped. Every skipped path and reason is printed in the summary.\n\n## Output format\n\nFiles are sorted by relative path and separated with headers:\n\n```text\n============================================================\nFILE: src/example.js\nSIZE: 1234 bytes\n============================================================\n\n...file contents...\n```\n\n## Privacy and safety\n\nThe program runs locally and does not upload files or call an AI service. Review the generated file before sharing it. It may contain secrets if you explicitly include them, so consider excluding `.env`, credentials, private keys, generated data, and personal files.\n\n## Development\n\n```bash\nnpm test\nnpm run lint\n```\n\nThe project requires Node 26.4+. The test suite validates configuration persistence, filesystem scanning, merge output, and OpenTUI rendering when native FFI is available.\n","readmeFilename":"README.md"}