{"_id":"@ajax-16/vit","_rev":"18-d5c93d03d983f4bccc3f4e1c273be66a","name":"@ajax-16/vit","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.2":{"name":"@ajax-16/vit","version":"0.0.2","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.2","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"b89f9cac1b454bede6216aaabafd37af08b42478","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.2.tgz","fileCount":10,"integrity":"sha512-oORY/goD/Kip66SuNGERo/EUY1bEldyFYjiMHZX5CU0kW7PTUJbA6bbeUwOJ7lEGvFC3jxx0WnffBktym4R1Rg==","signatures":[{"sig":"MEYCIQCgw4jzOv5FKFNG6DsPW8HS26lLd/F/q6hZItPLK7a31gIhAJdJ/m+SHcRFUVlhgoJnsR8Mi9xRlGAx0IueJ/UNnkV/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32133},"main":"index.js","type":"module","gitHead":"f79c1913ec5059b88b3f90005775a1669a5d0a44","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.2_1777136431025_0.009949502414621225","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@ajax-16/vit","version":"0.0.4","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.4","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"82da39282aef05f75ec994adfd0a6591e40b3961","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.4.tgz","fileCount":11,"integrity":"sha512-Sev1ftSbHCWAMOAJ0lgNu5eZ1OMgEv2dIvpyJCKfSIfEw8Zr1rRSdels7NMqU+lYRHfUjKVYr4FVjgOqx/dyNw==","signatures":[{"sig":"MEYCIQCZOpA9/Gvn4MPPpltW/v3gQnKDYW/GdXNrUpIhlubBegIhAKvmQ3KG3loBgpO6tqc5yEhHF3mWv/f6bhUJW7DlXqGM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43712},"main":"index.js","type":"module","gitHead":"7a14a4b8eb3008253f9a44b508133c8646de5057","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.4_1777210524631_0.8707265656434009","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@ajax-16/vit","version":"0.0.6","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.6","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"6e357ea121e55be31f79584f426c089e62d3025b","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.6.tgz","fileCount":14,"integrity":"sha512-majKChDkZQRzfLIhkTkgUEZhBzEjkdALe7+AinOiFJFpmaMjqR3N9hs1gGtw/chM28JA4kYwu2bvM+DRjBT9FQ==","signatures":[{"sig":"MEUCIBEy0RFbOXAbFBakNYXuSOr8teEERJK8BkAXaTqWywVfAiEA/LVaCKnAgqjB4GsmmsNkkYXgIsCNvoKCRJMO4IikXmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51891},"main":"index.js","type":"module","gitHead":"290059c828dfe55b1d16c44035b79c38993c5693","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.6_1777214593066_0.5795725302468779","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@ajax-16/vit","version":"0.0.7","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.7","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"b1ded8d103291830535f9849cb79c2f5782b35ae","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.7.tgz","fileCount":14,"integrity":"sha512-fWUrCaoE86WDsxpEvv+tdPOiO43ZwAg13ZwVDJOrrP83jRyr7bbrGD/JQKXRG92QXzKk9BX7bvHWoicYSLinZA==","signatures":[{"sig":"MEYCIQDXMYKr82K4whklzDi2Qclbvmjul1b5jviKyRNRej/oJAIhAM0613SZGCdiQkjMVhCL65TDos3dNeBWm32ry7wP+Dlg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52149},"main":"index.js","type":"module","gitHead":"4dd4744b61ad9078a40ef37a7513b8979c94a234","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.7_1777215131175_0.49646487020242835","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@ajax-16/vit","version":"0.0.8","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.8","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"82849577650b66e82766f2e561e0f3781c4a3efc","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.8.tgz","fileCount":14,"integrity":"sha512-9cyDXrDKEM2c1lI+11JCHfldcqI0dMe52xjPgnB0pKCHgR4iqXkCrVbgjP4wPCxnD9nC94GFKRnpG4idIkspnw==","signatures":[{"sig":"MEUCIQC3FFsmkCfH9+mf1fProe4/FEiysRqwV47O5lJ432g4BwIgDY74xrNTH8tMmLX2Xq5gog3ewYWBw39qM3vbxI95dZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53162},"main":"index.js","type":"module","gitHead":"2d3f06c78cece87f8ca7614c990fc5499428aeff","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.8_1777215917149_0.30705128691444217","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@ajax-16/vit","version":"0.0.9","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.9","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"4cf1e222e2f4391a503154e5a52ad75d9366f8c4","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.9.tgz","fileCount":14,"integrity":"sha512-xbPc6No3oxqfN9pdaO3v8mT/2L3meOMqBJZQq/n0TliHSlx3WGsv6bN8sahyHlgUNenj39mU2+VzYHyfz6x1sQ==","signatures":[{"sig":"MEUCIQDsqkqAHbqICMmOwdI4RLxyEBq1XMq8VQbvYcaDOlxA/AIgZlKZ6+qc0lFYcu5LBw5BePG2Qqa5aP6UDQziNJCwVNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53168},"main":"index.js","type":"module","gitHead":"0a094ce49a5d617e6e7239e56a1f225947aff17c","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.9_1777216204342_0.07162073610819286","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@ajax-16/vit","version":"0.0.12","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.12","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"268b98c30ba5fa447944d15b02ebc1863ea928de","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.12.tgz","fileCount":14,"integrity":"sha512-i0GkZ6Sr6eUjUhhiTGSlkd4r8RXq0J9JtKbbtALbFx1NoxPw1cXMGz+NV54lcjZO7QRV5cxQmZKpUJxn5UH1mg==","signatures":[{"sig":"MEQCIBwh3IJ3QdgCA6GmysFQE2RcIYqbyp4jOcymVtod5UqEAiAGsGmjJI8+3d5YqlaJV+cw5M/Mg9B25qrghbQOD475zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74747},"main":"index.js","type":"module","gitHead":"ffd7e47edd5d537a4699f072479f4551a0f7a93c","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.12_1777220704703_0.5787013544677517","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@ajax-16/vit","version":"0.0.15","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.15","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"122c1fd735a12e8cd972b859d144e1ff85631118","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.15.tgz","fileCount":14,"integrity":"sha512-M4vp6TevXKuJgPLzEN8SRUwM+Xx7Pp1SJrmoEmkDXalegOX/lsOmnAc3PITYKjmnYXI5LOv4E6uYpBN+su+kgw==","signatures":[{"sig":"MEYCIQCj129Ut/7vS5DwEetbYpHGkDnDa7GJfzRh7c8YUSmMywIhALSH524ruCwlBlLnTtIuYmWZy5eq+G6bpw5nnOXZNGa5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81268},"main":"index.js","type":"module","gitHead":"ded735017929ae023ecf974f74b83c72baef381d","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.15_1777239259322_0.9494061111250136","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@ajax-16/vit","version":"0.0.16","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.16","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"e7fa65614b6f137143b3517c16cd948742bf2407","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.16.tgz","fileCount":15,"integrity":"sha512-p5e8+vHLUnyU2Km6Zb+xQLO5j7GRUE0w8C82Rtupl9PocKKEndv2H9GImPSRhho1OdXr/J6RhD+m5ArnAlCnhw==","signatures":[{"sig":"MEQCIEJ23MME4Ncvzz2acB9NxXXARIrqYkrNmPZj9Ouxwo6qAiBdRgu5YGmIffM9EYtnv0luL2rlbuYu0XSYBRuQTE9Vsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94354},"main":"index.js","type":"module","gitHead":"4cb366f68e225b4f2ee2827bbb54aba3732845ba","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.16_1777240725953_0.5335626685791912","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@ajax-16/vit","version":"0.0.17","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.17","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"a67792ea1181e900ecaf24b51cca89a7b34738c4","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.17.tgz","fileCount":16,"integrity":"sha512-Os2Rfq+nyVrABhWNusv0d9yrOT43Md3L5MSnT+wohKtJJchFvSKlKyTXvVr4LLI62LZeEU4FSeVsxsyXOfzJVg==","signatures":[{"sig":"MEYCIQCXIbcqkMLW4SOQnFupvNKANS2F0hduXukviLyDHIixQgIhAPOm2SEUmrH2GmEwJ1bYDONH9kS9wmHdsNZGte9V8zMs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101219},"main":"index.js","type":"module","gitHead":"07f8ae3efc2e7f669de059aa5a94ffa33ea73a94","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.17_1777243008751_0.05956394019189659","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@ajax-16/vit","version":"0.0.18","author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.18","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"18152c2e2e424399a681140af6c9c04dbff65aa3","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.18.tgz","fileCount":16,"integrity":"sha512-B7dDrGzlMhiYKcpgxeU/zXDjqLs2t+X1VNmCuoeHqJNa+7VF+UweCmYnLH2anxSP26KpUH0oqAi3tUdE3jiaGA==","signatures":[{"sig":"MEUCIE/Wh/wqnYqw9ZOkWxkkc9HMN4e27fV7bGLMjCN5IS9KAiEA29KZglWQmH+vsB/mOXCpy5+Cz26vQAeiKD/w06vQpAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101209},"main":"index.js","type":"module","gitHead":"bba3e15eb79a81818c8a23a16fafcd0d49790ad7","scripts":{"start":"node index.js"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"CLI de versionado y changelog para Al-Andalus-Hispania","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.18_1777243728735_0.5172490044229956","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@ajax-16/vit","version":"0.0.25","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.25","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"a37a7d7c9a03cb67473de6f7c4707ef1fcf81887","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.25.tgz","fileCount":16,"integrity":"sha512-X3BSD7P4aOnMUsvbmcG+K/ov8LSgj6pP+TkvP85tEkOVB5mG6MMOKBBj6aj6io57GtlADkGKse4aFLvapqK/BA==","signatures":[{"sig":"MEQCIDpQKgdck8Lz6rNSBirfw17EX/cYWfMdlrEDfeDGPQxrAiBtnz/XfWWoi6MFfSJj34QAhOZNR8t5Pp5UL/g9c7jRnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126771},"jest":{"testMatch":["<rootDir>/tests/**/*.test.js"],"transform":{},"clearMocks":true,"testEnvironment":"node","moduleNameMapper":{"^ora$":"<rootDir>/tests/__mocks__/ora.js","^chalk$":"<rootDir>/tests/__mocks__/chalk.js","^inquirer$":"<rootDir>/tests/__mocks__/inquirer.js"},"collectCoverageFrom":["lib/**/*.js"]},"main":"index.js","type":"module","gitHead":"76ea799b13d6fb956646658738f9a11e0da7c3f0","scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node index.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.25_1777300497530_0.9149537945423345","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@ajax-16/vit","version":"0.0.29","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.29","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"a3a78224e6903579dc290af28ec3a3066bc9f272","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.29.tgz","fileCount":19,"integrity":"sha512-9WK8S+XcHkRH3IpjW92h2kg5cJP0ZdWu/px4yaOwgsC5tCxjwwfz5sKI5mU2Iqm+R9r3+cIm8vlgfcADsyi3hg==","signatures":[{"sig":"MEUCIQDHyBYJbITdKsgw6C1kyI5Y/F66SAc3MyPJ0sVAaxki/gIger14tBtu7l94rs0fkJvz8SSWTuV/PgG/ZF5WSaOYG18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160289},"jest":{"testMatch":["<rootDir>/tests/**/*.test.js"],"transform":{},"clearMocks":true,"testEnvironment":"node","moduleNameMapper":{"^ora$":"<rootDir>/tests/__mocks__/ora.js","^chalk$":"<rootDir>/tests/__mocks__/chalk.js","^inquirer$":"<rootDir>/tests/__mocks__/inquirer.js"},"collectCoverageFrom":["lib/**/*.js"]},"main":"index.js","type":"module","gitHead":"66482f63cda35c1cc94ba68998e7be6b67b7af41","scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node index.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","semver":"^7.7.4","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.29_1777391831251_0.2693555962228238","host":"s3://npm-registry-packages-npm-production"}},"0.0.34-alpha.0":{"name":"@ajax-16/vit","version":"0.0.34-alpha.0","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.34-alpha.0","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"4126048d8e25406294d9ae460bf4436cadee30d8","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.34-alpha.0.tgz","fileCount":21,"integrity":"sha512-52vmCSfTPmCqGAJyFRt8rXEcBB874R2UPujvvGmR+FbZWOC/40B1VluSFpZTBAz5Lia7w4xxEPSF117imxsxtA==","signatures":[{"sig":"MEUCIQDEhTBqhDmXpvi3bDog4OdllEzxXO9+2CEqXLtroOH9mgIgZy6vtRSoq55J252MbPwWvMfVTvOnXfxNhFe22ycJhrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190317},"jest":{"testMatch":["<rootDir>/tests/**/*.test.js"],"transform":{},"clearMocks":true,"testEnvironment":"node","moduleNameMapper":{"^ora$":"<rootDir>/tests/__mocks__/ora.js","^chalk$":"<rootDir>/tests/__mocks__/chalk.js","^inquirer$":"<rootDir>/tests/__mocks__/inquirer.js"},"collectCoverageFrom":["lib/**/*.js"]},"main":"index.js","type":"module","gitHead":"48d5ba440f1a5e423ef74bd60cd0bf040e4772e7","scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node index.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","semver":"^7.7.4","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.34-alpha.0_1777471998816_0.9245140137972465","host":"s3://npm-registry-packages-npm-production"}},"0.0.36":{"name":"@ajax-16/vit","version":"0.0.36","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.36","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"964a529f2b347f30a383aa8c23d7630592563221","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.36.tgz","fileCount":21,"integrity":"sha512-7kasMloVsXa9ZF2z1nBX2a2zDzZeMbhVfGFr/ZE9JprMPKOITymlOv5Hkm3W1CD3wTaGm5KnOVYm+whzIRUJqw==","signatures":[{"sig":"MEYCIQCA9PKMNChvt0u1ZcuYuzeSe1u7lKCER/XP+WiDNwVAeAIhANlACe6GfZVHul0QPDmC/k2juOSdJ64YH+Yd62jqHQuK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197379},"jest":{"testMatch":["<rootDir>/tests/**/*.test.js"],"transform":{},"clearMocks":true,"testEnvironment":"node","moduleNameMapper":{"^ora$":"<rootDir>/tests/__mocks__/ora.js","^chalk$":"<rootDir>/tests/__mocks__/chalk.js","^inquirer$":"<rootDir>/tests/__mocks__/inquirer.js"},"collectCoverageFrom":["lib/**/*.js"]},"main":"index.js","type":"module","gitHead":"c4ae36802d44644b252e932446b98a1254b1c033","scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node index.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","semver":"^7.7.4","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.36_1777474108279_0.5372332255595091","host":"s3://npm-registry-packages-npm-production"}},"0.0.37":{"name":"@ajax-16/vit","version":"0.0.37","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.37","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"5f5e517bb509688b57636c35b67d46b7996a85eb","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.37.tgz","fileCount":21,"integrity":"sha512-f3geR9QSwKJVggLIy6rsFMVjognH5cGLQBskduCnJ6KJbJaK23/QsUVhSK2IODAw79CqGYY5J/W58ceHTdbHCQ==","signatures":[{"sig":"MEYCIQDYtRMH0OJzaziDrYBvZOMtTZzbQxQ22u/jK3hG+S68jwIhAIAsVILJIwRYz2D8m4p+piwCZhuEjYL/cJP8YSqrPDrg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198896},"jest":{"testMatch":["<rootDir>/tests/**/*.test.js"],"transform":{},"clearMocks":true,"testEnvironment":"node","moduleNameMapper":{"^ora$":"<rootDir>/tests/__mocks__/ora.js","^chalk$":"<rootDir>/tests/__mocks__/chalk.js","^inquirer$":"<rootDir>/tests/__mocks__/inquirer.js"},"collectCoverageFrom":["lib/**/*.js"]},"main":"index.js","type":"module","gitHead":"a9bbacfe7c2478c1ac9790bf2314f269958dcd18","scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node index.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","semver":"^7.7.4","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.37_1777476514999_0.45819809936488287","host":"s3://npm-registry-packages-npm-production"}},"0.0.38":{"name":"@ajax-16/vit","version":"0.0.38","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"author":{"name":"ajax-16"},"license":"MIT","_id":"@ajax-16/vit@0.0.38","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"homepage":"https://github.com/ajax-16/vit#readme","bugs":{"url":"https://github.com/ajax-16/vit/issues"},"bin":{"vit":"index.js"},"dist":{"shasum":"3c94a1cbdcbde54cd6ca329e40605af1f73aeb9b","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.0.38.tgz","fileCount":21,"integrity":"sha512-Loq06mo+RKyV6FOjfiRMrq0/z+KYW/1syBR3f/wTgkWchjRd/msCcsoTe3ZljmQ9H3zw0G0JYc2ZgP5sQy5hFg==","signatures":[{"sig":"MEQCIEPpQmlwdltaFG2vV3Xf46iDeppavCN9uetVB5iPkMEfAiAZ9fuq/+u5eQsB2Z1+kLxqYsy7VX4o0MZejbPHeFy0EQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199046},"jest":{"testMatch":["<rootDir>/tests/**/*.test.js"],"transform":{},"clearMocks":true,"testEnvironment":"node","moduleNameMapper":{"^ora$":"<rootDir>/tests/__mocks__/ora.js","^chalk$":"<rootDir>/tests/__mocks__/chalk.js","^inquirer$":"<rootDir>/tests/__mocks__/inquirer.js"},"collectCoverageFrom":["lib/**/*.js"]},"main":"index.js","type":"module","gitHead":"7d975b6a859cd95528989059a73a59ff991e4417","scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node index.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"repository":{"url":"git+https://github.com/ajax-16/vit.git","type":"git"},"_npmVersion":"10.9.1","description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","semver":"^7.7.4","inquirer":"^9.3.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/vit_0.0.38_1777478993452_0.1336500374568781","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ajax-16/vit","version":"0.1.1","description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"type":"module","main":"index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/ajax-16/vit.git"},"author":{"name":"ajax-16"},"bugs":{"url":"https://github.com/ajax-16/vit/issues"},"homepage":"https://github.com/ajax-16/vit#readme","publishConfig":{"access":"public"},"bin":{"vit":"index.js"},"scripts":{"start":"node index.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"dependencies":{"chalk":"^5.3.0","inquirer":"^9.3.7","ora":"^8.1.1","semver":"^7.7.4"},"devDependencies":{"jest":"^29.7.0"},"jest":{"testEnvironment":"node","moduleNameMapper":{"^chalk$":"<rootDir>/tests/__mocks__/chalk.js","^ora$":"<rootDir>/tests/__mocks__/ora.js","^inquirer$":"<rootDir>/tests/__mocks__/inquirer.js"},"transform":{},"testMatch":["<rootDir>/tests/**/*.test.js"],"clearMocks":true,"collectCoverageFrom":["lib/**/*.js"]},"_id":"@ajax-16/vit@0.1.1","gitHead":"d717be7b88c82a917149b3ea9f3913f89af928a5","_nodeVersion":"24.14.0","_npmVersion":"10.9.1","dist":{"integrity":"sha512-B2Vyv9JyEiofiGdzJSLpIFS3ggl6oxhpytDSRhKcE5XxIpev7B1Kdz3D9gGC/oN7RTy7KZ5WwPsHPcCR6+m9wg==","shasum":"7a44f4e0e16153d6c270641eb3a599d79c272ef6","tarball":"https://registry.npmjs.org/@ajax-16/vit/-/vit-0.1.1.tgz","fileCount":28,"unpackedSize":213981,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCyLetDdx9h1bKZj3nBdWg9mIumO4BmGA+t2Lg12ZltpQIhAM7DxHbjRwu+Qkd+Qi0uxNmmGfWMGmXsHFstPKHNs/qI"}]},"_npmUser":{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"},"directories":{},"maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vit_0.1.1_1777579069910_0.44668258889064805"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T17:00:30.919Z","modified":"2026-04-30T19:57:50.146Z","0.0.2":"2026-04-25T17:00:31.167Z","0.0.4":"2026-04-26T13:35:24.794Z","0.0.6":"2026-04-26T14:43:13.218Z","0.0.7":"2026-04-26T14:52:11.321Z","0.0.8":"2026-04-26T15:05:17.315Z","0.0.9":"2026-04-26T15:10:04.488Z","0.0.12":"2026-04-26T16:25:04.904Z","0.0.15":"2026-04-26T21:34:19.462Z","0.0.16":"2026-04-26T21:58:46.084Z","0.0.17":"2026-04-26T22:36:48.884Z","0.0.18":"2026-04-26T22:48:48.880Z","0.0.25":"2026-04-27T14:34:57.690Z","0.0.29":"2026-04-28T15:57:11.464Z","0.0.34-alpha.0":"2026-04-29T14:13:19.020Z","0.0.36":"2026-04-29T14:48:28.468Z","0.0.37":"2026-04-29T15:28:35.153Z","0.0.38":"2026-04-29T16:09:53.591Z","0.1.1":"2026-04-30T19:57:50.037Z"},"bugs":{"url":"https://github.com/ajax-16/vit/issues"},"author":{"name":"ajax-16"},"license":"MIT","homepage":"https://github.com/ajax-16/vit#readme","keywords":["cli","release","changelog","versioning","monorepo","conventional-commits","semantic-versioning","semver","deployment","developer-tools","git","nodejs","interactive","rollback"],"repository":{"type":"git","url":"git+https://github.com/ajax-16/vit.git"},"description":"Interactive CLI to manage versions, changelogs and deployments — monorepo ready","maintainers":[{"name":"ajax-16","email":"davidbernardezluque7618@gmail.com"}],"readme":"# VIT — Version It!\r\n\r\nInteractive CLI tool to manage versions, changelogs and commits in single or multi-project repositories.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install -g @ajax-16/vit\r\n```\r\n\r\nVerify the installation:\r\n\r\n```bash\r\nvit\r\n```\r\n\r\n---\r\n<a id=\"quick-start\"></a>\r\n## Quick start — `vit init`\r\n\r\nThe fastest way to configure VIT in a new project:\r\n\r\n```bash\r\nvit init\r\n```\r\n\r\nThis creates two files in the current directory:\r\n\r\n- **`vit-config.json`** — ready-to-edit configuration with sensible defaults.\r\n- **`.vscode/settings.json`** — enables IntelliSense for `vit-config.json` in VS Code automatically.\r\n\r\n```\r\n  ✔  vit-config.json created.\r\n  ✔  .vscode/settings.json created.\r\n\r\n  VIT  Project initialized. Edit vit-config.json to configure.\r\n```\r\n\r\n> If either file already exists, `vit init` skips it without overwriting anything.\r\n\r\n### VS Code IntelliSense\r\n\r\nOnce initialized, VS Code provides autocompletion, inline documentation and validation for every field in `vit-config.json`:\r\n\r\n```json\r\n{\r\n  \"$schema\": \"https://raw.githubusercontent.com/Ajax-16/VIT/main/vit-config.schema.json\",\r\n  \"changelog\": { ... }\r\n}\r\n```\r\n\r\nTo enable it manually in an existing project, add this to your `.vscode/settings.json`:\r\n\r\n```json\r\n{\r\n  \"json.schemas\": [\r\n    {\r\n      \"fileMatch\": [\"vit-config.json\"],\r\n      \"url\": \"https://raw.githubusercontent.com/Ajax-16/VIT/main/vit-config.schema.json\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\nRun `vit` at the root of your project. VIT will look for a `vit-config.json` file in the current directory.\r\n\r\n```\r\n  VIT   Version It!  v1.0.0\r\n\r\n  VCS            : git\r\n  Current branch : main\r\n  Last tag       : v1.2.3\r\n\r\n? Welcome. What do you want to do?\r\n  🚀  Version it!  — bump + changelog + commit\r\n  📋  Changelog    — add or edit entries\r\n  💾  Commit       — commit and push without bump\r\n  ⏫  Promote      — merge into main + stable release\r\n  🔄  Sync         — sync prerelease branches with main\r\n  ⏪  Rollback     — roll back to a tag\r\n  ❌  Exit\r\n```\r\n\r\n> **Note:** `Promote` and `Sync` only appear in the interactive menu when relevant (promote requires being on a prerelease branch).\r\n\r\n### Available actions\r\n\r\n| Action          | Description                                              |\r\n| --------------- | -------------------------------------------------------- |\r\n| **Version it!** | Version bump + changelog + commit + tag + push           |\r\n| **Changelog**   | Add or edit changelog entries without bumping            |\r\n| **Commit**      | Commit and push without modifying versions               |\r\n| **Promote**     | Promote a prerelease branch into a stable release        |\r\n| **Sync**        | Sync prerelease branches that are behind their base      |\r\n| **Rollback**    | Revert the repository to a previous tag                  |\r\n\r\n---\r\n\r\n## CLI Arguments\r\n\r\nYou can pass arguments directly when running `vit` to skip steps in the interactive flow.\r\n\r\n```bash\r\nvit [command] [options]\r\n```\r\n\r\n### Commands\r\n\r\n| Command     | Alias | Description                                                    |\r\n| ----------- | ----- | -------------------------------------------------------------- |\r\n| `release`   | `r`   | Run the release flow                                           |\r\n| `commit`    | `c`   | Run a commit without bumping                                   |\r\n| `changelog` | `cl`  | Open the changelog flow                                        |\r\n| `rollback`  | `rb`  | Revert to a previous tag                                       |\r\n| `promote`   | `pr`  | Promote prerelease branch into stable release                  |\r\n| `sync`      | `sy`  | Sync prerelease branches that are behind their release branch  |\r\n\r\n### Options\r\n\r\n| Option             | Alias | Description                                                                     |\r\n| ------------------ | ----- | ------------------------------------------------------------------------------- |\r\n| `--bump <type>`    | `-b`  | Bump type: `patch`, `minor`, `major`, `prepatch`, `preminor`, `premajor`        |\r\n| `--message <msg>`  | `-m`  | Commit message                                                                  |\r\n| `--tag <tag>`      | `-t`  | Target tag for rollback                                                         |\r\n| `--projects <ids>` | `-p`  | Comma-separated project IDs (monorepo)                                          |\r\n| `--target <branch>`|       | Target release branch for promote (default: first in `releaseBranches`)         |\r\n| `--semantic`       | `-s`  | Force semantic changelog mode for this run                                      |\r\n| `--yes`            | `-y`  | Skip all prompts and confirmations, use defaults or provided flags              |\r\n| `--dry-run`        | `-d`  | Simulate the operation without writing or pushing                               |\r\n| `--version`        | `-v`  | Show VIT version                                                                |\r\n| `--help`           | `-h`  | Show help                                                                       |\r\n\r\n### Non-interactive mode (`--yes`)\r\n\r\n`--yes` (or `-y`) skips **all** prompts and confirmations, using the values provided via flags or their defaults:\r\n\r\n- Confirms all actions automatically.\r\n- Selects all configured projects if `--projects` is not specified.\r\n- Uses the default commit message if `--message` is not provided.\r\n- In non-semantic mode, skips the changelog step silently.\r\n- In semantic mode, regenerates the changelog automatically from git tags.\r\n\r\n> **Important:** `--yes` does not guess required values. You must still provide `--bump` for `release` and `--message` for `commit`. Without them, VIT will exit with an error.\r\n\r\n```bash\r\n# ✅ Correct\r\nvit release --bump patch --yes\r\nvit commit --message \"fix: typo\" --yes\r\n\r\n# ❌ Missing required flag\r\nvit release --yes          # --bump is required\r\nvit commit --yes           # --message is required\r\n```\r\n\r\n### Behavior by level\r\n\r\n| Command                                    | What is skipped                                                  | What is still asked                         |\r\n| ------------------------------------------ | ---------------------------------------------------------------- | ------------------------------------------- |\r\n| `vit release`                              | Main menu                                                        | Bump type, changelog, message, confirmation |\r\n| `vit release --bump patch`                 | Menu + bump type                                                 | Changelog, message, confirmation            |\r\n| `vit release --bump patch --message \"fix\"` | Menu + bump + message                                            | Changelog, confirmation                     |\r\n| `vit release --bump patch --yes`           | Everything                                                       | Nothing                                     |\r\n| `vit commit --message \"fix\" --yes`         | Everything                                                       | Nothing                                     |\r\n| `vit changelog --semantic --yes`           | Everything (regenerates full changelog from all tags)            | Nothing                                     |\r\n| `vit rollback --tag v1.2.3 --yes`          | Everything                                                       | Nothing                                     |\r\n| `vit promote --yes`                        | Everything (merges/promotes with defaults)                       | Nothing                                     |\r\n| `vit sync`                                 | Everything (always non-interactive)                              | Nothing                                     |\r\n\r\n### Examples\r\n\r\n```bash\r\n# Interactive release from the menu\r\nvit\r\n\r\n# Release skipping the menu, asks the rest\r\nvit release\r\n\r\n# Release with fixed bump, still asks for changelog and confirmation\r\nvit release --bump minor\r\n\r\n# Fully non-interactive release\r\nvit release --bump patch --yes\r\n\r\n# Non-interactive commit with custom message\r\nvit commit --message \"fix: typo\" --yes\r\n\r\n# Rollback to a specific tag without confirmation\r\nvit rollback --tag v1.2.3 --yes\r\n\r\n# Simulate a release without writing anything\r\nvit release --bump patch --dry-run\r\n\r\n# Release in monorepo for backend only\r\nvit release --bump patch --projects backend --yes\r\n\r\n# Promote prerelease branch into main (merge strategy)\r\nvit promote --yes\r\n\r\n# Promote into a specific target branch\r\nvit promote --target main --yes\r\n\r\n# Sync prerelease branches\r\nvit sync\r\nvit sync --dry-run\r\n```\r\n\r\n---\r\n\r\n## Prerelease flow\r\n\r\nVIT has native support for prerelease branches. When you run `vit release` from a branch listed in `preReleaseBranches`, VIT automatically switches into prerelease mode.\r\n\r\n### First prerelease bump\r\n\r\nOn the first release from a prerelease branch, VIT asks for the **magnitude of the upcoming stable release**:\r\n\r\n```\r\n? What magnitude will the final stable release be?\r\n  prepatch  — anticipates a patch  (x.x.+1-alpha.0)\r\n  preminor  — anticipates a minor  (x.+1.0-alpha.0)\r\n  premajor  — anticipates a major  (+1.0.0-alpha.0)\r\n```\r\n\r\n### Subsequent prerelease bumps\r\n\r\nOnce a prerelease version exists, subsequent bumps on the same branch automatically use `prerelease`, incrementing the counter (e.g. `1.1.0-alpha.0` → `1.1.0-alpha.1`).\r\n\r\n### Prerelease changelog behaviour\r\n\r\nPrerelease iterations (`prepatch`, `preminor`, `premajor`, `prerelease`) **skip the changelog step** entirely. The changelog is only generated when the stable version is published via `promote`.\r\n\r\nIn semantic mode, prerelease tags are not emitted as separate entries in the changelog. Their commits accumulate and are grouped under the next stable release entry.\r\n\r\n### Promote\r\n\r\nWhen you are ready to publish the stable version, use `promote` from the prerelease branch:\r\n\r\n```bash\r\nvit promote\r\nvit promote --yes\r\nvit promote --target main --yes\r\n```\r\n\r\nPromote:\r\n1. Bumps all targets to the stable version (strips the prerelease suffix).\r\n2. Runs the changelog step (if `semantic: true`, regenerates the full changelog).\r\n3. Merges or opens a PR into the target release branch, depending on `promoteStrategy`.\r\n4. Creates the stable tag.\r\n\r\nSee [`git.promoteStrategy`](#gitpromotestrategy) for merge vs PR configuration.\r\n\r\n### Sync\r\n\r\n`vit sync` checks all branches listed in `preReleaseBranches` and merges any commits from their base release branch that are missing:\r\n\r\n```bash\r\nvit sync\r\nvit sync --dry-run\r\n```\r\n\r\nThis is useful to keep prerelease branches up to date with hotfixes or other changes landed on `main`.\r\n\r\n---\r\n\r\n## Configuration — `vit-config.json`\r\n\r\nCreate a `vit-config.json` file at the root of your project or run [`vit init`](#quick-start) to generate one automatically:\r\n\r\n```json\r\n{\r\n  \"$schema\": \"https://raw.githubusercontent.com/Ajax-16/VIT/main/vit-config.schema.json\",\r\n  \"changelog\": {\r\n    \"path\": \"./CHANGELOG.md\",\r\n    \"title\": \"Changelog\",\r\n    \"semantic\": false\r\n  },\r\n  \"git\": {\r\n    \"defaultCommitMessage\": \"chore: update\",\r\n    \"releaseCommitMessage\": \"chore: release\",\r\n    \"changelogCommitMessage\": \"docs: update changelog\",\r\n    \"strict\": true,\r\n    \"releaseBranches\": [\"main\"],\r\n    \"rollbackStrategy\": \"revert\",\r\n    \"promoteStrategy\": \"merge\",\r\n    \"preReleaseBranches\": [\r\n      { \"id\": \"alpha\", \"name\": \"alpha\" }\r\n    ]\r\n  },\r\n  \"vcs\": {\r\n    \"provider\": \"git\"\r\n  },\r\n  \"envFile\": \".env\",\r\n  \"projects\": [\r\n    {\r\n      \"id\": \"my-project\",\r\n      \"label\": \"My Project\",\r\n      \"path\": \".\",\r\n      \"tagPrefix\": \"v\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### `changelog`\r\n\r\n| Field      | Type      | Default          | Description                                                                                                                         |\r\n| ---------- | --------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------- |\r\n| `path`     | `string`  | `./CHANGELOG.md` | Path to the changelog file                                                                                                          |\r\n| `title`    | `string`  | `Changelog`      | Changelog title                                                                                                                     |\r\n| `semantic` | `boolean` | `false`          | If `true`, the changelog is automatically generated from commits using [Conventional Commits](https://www.conventionalcommits.org/) |\r\n\r\n#### Semantic changelog\r\n\r\nWhen `semantic: true`, VIT analyzes the commit history since the last tag and automatically generates the changelog by grouping commits by type (`feat`, `fix`, `refactor`…). The expected commit message format is:\r\n\r\n```\r\n<type>(<optional scope>): <description>\r\n```\r\n\r\nValid examples:\r\n\r\n```\r\nfeat: new login screen\r\nfix(api): correct timeout on slow requests\r\nrefactor(auth): extract validation logic\r\n```\r\n\r\nCommits that don't follow this format are automatically ignored.\r\n\r\n**Interactive flow** — VIT shows the detected commits, lets you deselect the ones you don't want to include, and optionally asks for an introductory text before saving.\r\n\r\n**With `--yes`** — the changelog is silently regenerated without prompts.\r\n\r\n**You can also force semantic mode for a single run** without changing `vit-config.json` using the `--semantic` flag:\r\n\r\n```bash\r\nvit changelog --semantic --yes\r\nvit release --bump minor --semantic --yes\r\n```\r\n\r\n```json\r\n\"changelog\": {\r\n  \"path\": \"./CHANGELOG.md\",\r\n  \"title\": \"Changelog\",\r\n  \"semantic\": true\r\n}\r\n```\r\n\r\n### `git`\r\n\r\n| Field                    | Type       | Default                  | Description                                                          |\r\n| ------------------------ | ---------- | ------------------------ | -------------------------------------------------------------------- |\r\n| `defaultCommitMessage`   | `string`   | `chore: update`          | Default message for commits without bump                             |\r\n| `releaseCommitMessage`   | `string`   | `chore: version bump`    | Default message for release commits                                  |\r\n| `changelogCommitMessage` | `string`   | `docs: update changelog` | Default message for changelog commits                                |\r\n| `releaseBranches`        | `string[]` | `[]`                     | Branches from which stable releases are allowed                      |\r\n| `strict`                 | `boolean`  | `false`                  | If `true`, blocks the release when on a non-allowed branch           |\r\n| `rollbackStrategy`       | `string`   | `\"revert\"`               | Rollback strategy: `\"revert\"` (default) or `\"reset\"`                 |\r\n| `promoteStrategy`        | `string`   | `\"merge\"`                | Promote strategy: `\"merge\"` (local merge) or `\"pr\"` (GitHub PR)      |\r\n| `preReleaseBranches`     | `array`    | `[]`                     | Branches treated as prerelease (see [Prerelease flow](#prerelease-flow)) |\r\n\r\n#### Branch control for releases\r\n\r\nYou can restrict which branches can run a release using `releaseBranches` and `strict`.\r\n\r\n**Warning mode** (`strict: false`, default)\r\n\r\nIf you are on a non-allowed branch, VIT shows a warning and asks if you want to continue anyway:\r\n\r\n```\r\n  WARNING   You are on branch \"feat/my-feature\", not on a release branch.\r\n  Configured release branches: main\r\n\r\n? Continue anyway? (y/N)\r\n```\r\n\r\nWith `--yes`, the warning is automatically accepted and the release continues.\r\n\r\n**Strict mode** (`strict: true`)\r\n\r\nIf you are on a non-allowed branch, the release is blocked:\r\n\r\n```\r\n  BLOCKED   Releases are not allowed from branch \"feat/my-feature\".\r\n  Allowed branches: main\r\n```\r\n\r\nIn `--dry-run` mode, strict blocking is ignored to allow simulations from any branch.\r\n\r\n#### `git.promoteStrategy`\r\n\r\nControls how `vit promote` integrates the prerelease branch into the target release branch.\r\n\r\n| Value     | Behaviour                                                                                      |\r\n| --------- | ---------------------------------------------------------------------------------------------- |\r\n| `\"merge\"` | Merges the prerelease branch locally into the target branch and pushes. *(default)*            |\r\n| `\"pr\"`    | Opens a GitHub Pull Request from the prerelease branch into the target branch via the API.     |\r\n\r\nWhen `\"pr\"` is selected and a PR already exists for the same head/base pair, VIT **reuses it** (updates title and body) instead of creating a duplicate.\r\n\r\nThe GitHub token must be available as `GITHUB_TOKEN` in the environment or via `envFile`:\r\n\r\n```json\r\n\"git\": {\r\n  \"promoteStrategy\": \"pr\"\r\n},\r\n\"envFile\": \".env\"\r\n```\r\n\r\n```env\r\nGITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx\r\n```\r\n\r\n#### `git.preReleaseBranches`\r\n\r\nList of branches that VIT treats as prerelease. Accepts strings or objects:\r\n\r\n```json\r\n\"preReleaseBranches\": [\r\n  \"alpha\",\r\n  { \"id\": \"beta\", \"name\": \"beta\" }\r\n]\r\n```\r\n\r\n- When on one of these branches, `vit release` automatically enters prerelease mode.\r\n- The `promote` command is only available from these branches.\r\n- Prerelease tags (e.g. `v1.1.0-alpha.0`) are excluded as standalone entries in the semantic changelog.\r\n\r\n#### Rollback strategy\r\n\r\n`rollbackStrategy` controls how VIT undoes changes when rolling back to a previous tag.\r\n\r\nBefore executing, VIT always shows a **preview of the affected commits** and the active strategy:\r\n\r\n```\r\n  Commits that will be rolled back:  (strategy: revert)\r\n  ─────────────────────────────────────────────────────\r\n  · feat: new login screen\r\n  · fix: fix bug in the form\r\n  · chore: release v1.1.0\r\n\r\n  Strategy  : revert — creates a new commit, history preserved\r\n  Target tag: v1.0.0 (3 commit(s) affected)\r\n```\r\n\r\n**`\"revert\"` (default)** — creates a new commit that undoes the changes. History intact, normal push possible.\r\n\r\n**`\"reset\"`** — moves HEAD to the target tag, rewriting history. Requires `git push --force`.\r\n\r\n> With `reset`, VIT also offers to delete tags that were above the target tag.\r\n\r\n### `vcs`\r\n\r\n| Field      | Type     | Default | Description                              |\r\n| ---------- | -------- | ------- | ---------------------------------------- |\r\n| `provider` | `string` | `git`   | VCS provider. Currently supported: `git` |\r\n\r\n### `projects`\r\n\r\nArray of projects to manage. Useful for monorepos.\r\n\r\n| Field       | Type     | Description                                                    |\r\n| ----------- | -------- | -------------------------------------------------------------- |\r\n| `id`        | `string` | Unique project identifier                                      |\r\n| `label`     | `string` | Human-readable project name                                    |\r\n| `path`      | `string` | Relative path to the project directory                         |\r\n| `tagPrefix` | `string` | Prefix for git tags (`v` → `v1.2.3`, `vback` → `vback1.2.3`)  |\r\n\r\n**Monorepo example:**\r\n\r\n```json\r\n\"projects\": [\r\n  { \"id\": \"backend\",  \"label\": \"Backend\",  \"path\": \"./Backend\",  \"tagPrefix\": \"vback\" },\r\n  { \"id\": \"frontend\", \"label\": \"Frontend\", \"path\": \"./Frontend\", \"tagPrefix\": \"vfront\" }\r\n]\r\n```\r\n\r\n### `types` (optional)\r\n\r\nCustomize the commit types available in the changelog.\r\n\r\n```json\r\n\"types\": [\r\n  { \"value\": \"feat\",   \"label\": \"🚀 Features\",     \"choiceLabel\": \"🚀 feat     — New feature\" },\r\n  { \"value\": \"fix\",    \"label\": \"🐛 Bug Fixes\",     \"choiceLabel\": \"🐛 fix      — Bug fix\" },\r\n  { \"value\": \"chore\",  \"label\": \"🔧 Maintenance\",   \"choiceLabel\": \"🔧 chore    — Maintenance\" },\r\n  { \"value\": \"deploy\", \"label\": \"🌍 Deployment\",    \"choiceLabel\": \"🌍 deploy   — Deployment / infra\" }\r\n]\r\n```\r\n\r\nDefault types included: `feat`, `fix`, `refactor`, `perf`, `revert`, `docs`, `style`.\r\n\r\n### `envFile` (optional)\r\n\r\nPath to a global `.env` file whose variables will be available in **all** actions.\r\n\r\n```json\r\n{\r\n  \"envFile\": \".env\"\r\n}\r\n```\r\n\r\n---\r\n\r\n## Variable interpolation — `${VAR}`\r\n\r\nVIT supports `${VAR}` placeholder interpolation across **all string values** in `vit-config.json`. Variables are resolved from:\r\n\r\n1. `process.env` (environment variables already in scope)\r\n2. The global `envFile` (loaded before interpolation)\r\n\r\nThis makes it easy to inject secrets, tokens or dynamic values without hardcoding them:\r\n\r\n```json\r\n{\r\n  \"envFile\": \".env\",\r\n  \"postActions\": [\r\n    {\r\n      \"id\": \"deploy\",\r\n      \"command\": \"scp ./dist ${DEPLOY_USER}@${SERVER_HOST}:/var/www\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n```env\r\nDEPLOY_USER=deploy-bot\r\nSERVER_HOST=production.myserver.com\r\nGITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx\r\n```\r\n\r\n### Built-in VIT variables\r\n\r\nVIT exposes a set of built-in variables automatically available in any config string:\r\n\r\n| Variable              | Value                                      |\r\n| --------------------- | ------------------------------------------ |\r\n| `${branch}`           | Current git branch                         |\r\n| `${last_tag}`         | Last git tag                               |\r\n| `${version}`          | current project version                                |\r\n\r\n---\r\n\r\n## Pre-actions and Post-actions\r\n\r\nVIT allows you to run commands automatically before (`preActions`) and after (`postActions`) each operation.\r\n\r\n```json\r\n{\r\n  \"preActions\": [...],\r\n  \"postActions\": [...]\r\n}\r\n```\r\n\r\n### Action structure\r\n\r\n```json\r\n{\r\n  \"id\": \"my-action\",\r\n  \"label\": \"Visible description\",\r\n  \"on\": [\"release\", \"commit\"],\r\n  \"cwd\": \"./Backend\",\r\n  \"continueOnError\": false,\r\n  \"showOutput\": true,\r\n  \"timeoutMs\": 30000,\r\n  \"envFile\": \".env.production\",\r\n  \"env\": {\r\n    \"NODE_ENV\": \"production\"\r\n  },\r\n  \"promptEnv\": [\r\n    { \"name\": \"SSH_PASS\", \"message\": \"SSH password:\" }\r\n  ],\r\n  \"pipeline\": [...],\r\n  \"command\": \"npm test\"\r\n}\r\n```\r\n\r\n| Field             | Type       | Default       | Description                                                                      |\r\n| ----------------- | ---------- | ------------- | -------------------------------------------------------------------------------- |\r\n| `id`              | `string`   | auto          | Unique identifier                                                                |\r\n| `label`           | `string`   | `command`     | Text shown in the spinner                                                        |\r\n| `on`              | `string[]` | `[\"release\"]` | Triggers: `release`, `commit`, `changelog`, `prerelease`                         |\r\n| `cwd`             | `string`   | `.`           | Working directory for the command                                                |\r\n| `continueOnError` | `boolean`  | `false`       | If `true`, an error doesn't stop execution                                       |\r\n| `showOutput`      | `boolean`  | `true`        | Show stdout/stderr in real time                                                  |\r\n| `timeoutMs`       | `number`   | `null`        | Timeout in ms. `null` = no limit                                                 |\r\n| `envFile`         | `string`   | `null`        | Path to a `.env` specific to this action (higher priority than global `envFile`) |\r\n| `env`             | `object`   | `{}`          | Static environment variables (higher priority than `envFile`)                    |\r\n| `promptEnv`       | `array`    | `[]`          | Variables asked interactively before running (highest priority)                  |\r\n| `pipeline`        | `array`    | `[]`          | Previous steps that enrich the command's environment                             |\r\n| `command`         | `string`   | —             | Main command to execute                                                          |\r\n\r\n### Available triggers\r\n\r\n| Trigger     | When it runs                           |\r\n| ----------- | -------------------------------------- |\r\n| `release`   | When bumping the version               |\r\n| `prerelease`| When bumping the a prerelease version  |\r\n| `commit`    | When committing without bump           |\r\n| `changelog` | When committing a changelog            |\r\n\r\n### `promptEnv`\r\n\r\nAllows asking for sensitive values (passwords, tokens) right before running the action, without storing them anywhere.\r\n\r\n```json\r\n\"promptEnv\": [\r\n  { \"name\": \"SSH_PASS\",     \"message\": \"SSH password:\" },\r\n  { \"name\": \"DEPLOY_TOKEN\", \"message\": \"Deploy token:\" }\r\n]\r\n```\r\n\r\n> **Note:** `promptEnv` has the highest priority in VIT. Even when running with `--yes`, the process will pause until it receives user input for any `promptEnv` variables.\r\n\r\n---\r\n\r\n## Environment variables and `envFile`\r\n\r\nVIT supports loading environment variables from `.env` files at two levels: **global** (for all actions) and **per action** (only for that action).\r\n\r\n### Priority order (lower → higher)\r\n\r\n```\r\nprocess.env  →  global envFile  →  action envFile  →  action.env  →  promptEnv\r\n```\r\n\r\n### Global `envFile`\r\n\r\nDefined at the root of `vit-config.json`. Its variables are available in all actions and in `${VAR}` interpolation.\r\n\r\n```json\r\n{\r\n  \"envFile\": \".env\",\r\n  \"preActions\": [...]\r\n}\r\n```\r\n\r\n### Per-action `envFile`\r\n\r\nDefined inside a specific action. Overrides variables from the global `envFile` with the same name.\r\n\r\n```json\r\n{\r\n  \"id\": \"deploy\",\r\n  \"envFile\": \".env.production\",\r\n  \"command\": \"scp ./dist ${DEPLOY_USER}@${SERVER_HOST}:/var/www\"\r\n}\r\n```\r\n\r\n> **Note:** `.env` files are parsed internally without needing `dotenv`. Comments (`# comment`), blank lines and quoted values are supported.\r\n\r\n---\r\n\r\n## Step pipeline\r\n\r\nThe `pipeline` of an action is a list of commands that run **before** the main `command`. Each step can capture its stdout as an environment variable available to subsequent steps and the final `command` via `${VAR}` interpolation.\r\n\r\n```json\r\n\"pipeline\": [\r\n  {\r\n    \"id\": \"node-version\",\r\n    \"command\": \"node -e \\\"process.stdout.write(process.versions.node)\\\"\",\r\n    \"captureAs\": \"NODE_VERSION\"\r\n  },\r\n  {\r\n    \"id\": \"git-branch\",\r\n    \"command\": \"git rev-parse --abbrev-ref HEAD\",\r\n    \"captureAs\": \"GIT_BRANCH\"\r\n  }\r\n],\r\n\"command\": \"node -e \\\"console.log('Node: ${NODE_VERSION} — Branch: ${GIT_BRANCH}')\\\"\"\r\n```\r\n\r\n### Pipeline step fields\r\n\r\n| Field             | Type      | Default         | Description                                         |\r\n| ----------------- | --------- | --------------- | --------------------------------------------------- |\r\n| `id`              | `string`  | auto            | Unique identifier                                   |\r\n| `label`           | `string`  | `command`       | Text shown in the spinner                           |\r\n| `command`         | `string`  | —               | Command to execute                                  |\r\n| `captureAs`       | `string`  | `null`          | Variable to store stdout in                         |\r\n| `cwd`             | `string`  | `process.cwd()` | Working directory                                   |\r\n| `continueOnError` | `boolean` | `false`         | If `true`, an error doesn't stop the pipeline       |\r\n| `showOutput`      | `boolean` | `false`         | Show stdout (usually unnecessary in pipeline steps) |\r\n| `timeoutMs`       | `number`  | `null`          | Timeout in ms                                       |\r\n\r\n---\r\n\r\n## Pipeline vs. multiple actions\r\n\r\n### Pipeline — steps inside an action\r\n\r\n- All steps **share the same accumulated environment**.\r\n- Their purpose is to **prepare dynamic data** to build the main command.\r\n- They have no `on`, `promptEnv` or `env` of their own.\r\n\r\n### Multiple actions — independent tasks\r\n\r\n- Each action has its own `on`, `cwd`, `env`, `envFile`, `promptEnv`, `showOutput` and `timeoutMs`.\r\n- Each one appears as a separate block with its own spinner in the UI.\r\n- **They do not share variables** between them.\r\n\r\n### Practical rule\r\n\r\n| Situation                                                          | Use              |\r\n| ------------------------------------------------------------------ | ---------------- |\r\n| I need the result of step A to build command B                     | `pipeline`       |\r\n| They are independent tasks that could run separately               | separate actions |\r\n| I want each task to have its own clearly visible label and spinner | separate actions |\r\n| I want to prepare context before a complex command                 | `pipeline`       |\r\n\r\n---\r\n\r\n## Advanced examples\r\n\r\n### Docker build with automatic version tag\r\n\r\n```json\r\n{\r\n  \"id\": \"docker-build\",\r\n  \"label\": \"Build Docker\",\r\n  \"on\": [\"release\"],\r\n  \"showOutput\": true,\r\n  \"pipeline\": [\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(require('./package.json').version)\\\"\",\r\n      \"captureAs\": \"VERSION\"\r\n    },\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(require('./package.json').name)\\\"\",\r\n      \"captureAs\": \"APP_NAME\"\r\n    }\r\n  ],\r\n  \"command\": \"docker build -t ${APP_NAME}:${VERSION} -t ${APP_NAME}:latest .\"\r\n}\r\n```\r\n\r\n---\r\n\r\n### SCP deploy with password asked at runtime\r\n\r\n```json\r\n{\r\n  \"id\": \"deploy-production\",\r\n  \"label\": \"Deploy to production\",\r\n  \"on\": [\"release\"],\r\n  \"showOutput\": true,\r\n  \"promptEnv\": [\r\n    { \"name\": \"SSH_PASS\", \"message\": \"Production server SSH password:\" }\r\n  ],\r\n  \"pipeline\": [\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(require('./package.json').version)\\\"\",\r\n      \"captureAs\": \"VERSION\"\r\n    },\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(new Date().toISOString().slice(0,10).replace(/-/g,''))\\\"\",\r\n      \"captureAs\": \"DATE\"\r\n    }\r\n  ],\r\n  \"command\": \"sshpass -p ${SSH_PASS} scp -r ./dist user@myserver.com:/var/www/releases/${VERSION}-${DATE}\"\r\n}\r\n```\r\n\r\n---\r\n\r\n### Publish to npm only if the version doesn't exist yet\r\n\r\n```json\r\n{\r\n  \"id\": \"npm-publish\",\r\n  \"label\": \"Publish to npm\",\r\n  \"on\": [\"release\"],\r\n  \"showOutput\": true,\r\n  \"pipeline\": [\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(require('./package.json').version)\\\"\",\r\n      \"captureAs\": \"VERSION\"\r\n    },\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(require('./package.json').name)\\\"\",\r\n      \"captureAs\": \"PKG_NAME\"\r\n    },\r\n    {\r\n      \"id\": \"check-published\",\r\n      \"command\": \"npm view ${PKG_NAME}@${VERSION} version\",\r\n      \"captureAs\": \"PUBLISHED_VERSION\",\r\n      \"continueOnError\": true\r\n    }\r\n  ],\r\n  \"command\": \"node -e \\\"if ('${PUBLISHED_VERSION}' === '${VERSION}') { console.log('Version ${VERSION} already published, skipping.'); process.exit(0); } require('child_process').execSync('npm publish', { stdio: 'inherit' });\\\"\"\r\n}\r\n```\r\n\r\n---\r\n\r\n### Slack notification on release\r\n\r\n```json\r\n{\r\n  \"id\": \"notify-slack\",\r\n  \"label\": \"Notify Slack\",\r\n  \"on\": [\"release\"],\r\n  \"continueOnError\": true,\r\n  \"showOutput\": false,\r\n  \"promptEnv\": [{ \"name\": \"SLACK_WEBHOOK\", \"message\": \"Slack Webhook URL:\" }],\r\n  \"pipeline\": [\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(require('./package.json').version)\\\"\",\r\n      \"captureAs\": \"VERSION\"\r\n    },\r\n    {\r\n      \"command\": \"git rev-parse --abbrev-ref HEAD\",\r\n      \"captureAs\": \"BRANCH\"\r\n    },\r\n    {\r\n      \"command\": \"node -e \\\"process.stdout.write(new Date().toISOString().slice(0,16).replace('T',' '))\\\"\",\r\n      \"captureAs\": \"DATE\"\r\n    }\r\n  ],\r\n  \"command\": \"curl -s -X POST ${SLACK_WEBHOOK} -H 'Content-type: application/json' --data '{\\\"text\\\":\\\"🚀 *Release v${VERSION}* published from `${BRANCH}` on ${DATE}\\\"}'\"\r\n}\r\n```\r\n\r\n---\r\n\r\n### Full monorepo: preflight + tests + build + deploy + summary\r\n\r\n```json\r\n{\r\n  \"git\": {\r\n    \"strict\": true,\r\n    \"releaseBranches\": [\"main\"],\r\n    \"promoteStrategy\": \"merge\",\r\n    \"preReleaseBranches\": [\r\n      { \"id\": \"alpha\", \"name\": \"alpha\" }\r\n    ]\r\n  },\r\n  \"envFile\": \".env\",\r\n  \"projects\": [\r\n    { \"id\": \"backend\",  \"label\": \"Backend\",  \"path\": \"./Backend\",  \"tagPrefix\": \"vback\" },\r\n    { \"id\": \"frontend\", \"label\": \"Frontend\", \"path\": \"./Frontend\", \"tagPrefix\": \"vfront\" }\r\n  ],\r\n  \"preActions\": [\r\n    {\r\n      \"id\": \"test-backend\",\r\n      \"label\": \"Backend tests\",\r\n      \"on\": [\"release\"],\r\n      \"cwd\": \"./Backend\",\r\n      \"showOutput\": true,\r\n      \"command\": \"npm test\"\r\n    },\r\n    {\r\n      \"id\": \"build-frontend\",\r\n      \"label\": \"Frontend build\",\r\n      \"on\": [\"release\"],\r\n      \"cwd\": \"./Frontend\",\r\n      \"showOutput\": true,\r\n      \"command\": \"npm run build\"\r\n    }\r\n  ],\r\n  \"postActions\": [\r\n    {\r\n      \"id\": \"deploy\",\r\n      \"label\": \"Deploy to production\",\r\n      \"on\": [\"release\"],\r\n      \"showOutput\": true,\r\n      \"envFile\": \".env.production\",\r\n      \"promptEnv\": [{ \"name\": \"SSH_PASS\", \"message\": \"SSH password:\" }],\r\n      \"pipeline\": [\r\n        {\r\n          \"command\": \"node -e \\\"process.stdout.write(require('./Backend/package.json').version)\\\"\",\r\n          \"captureAs\": \"BACK_VERSION\"\r\n        },\r\n        {\r\n          \"command\": \"node -e \\\"process.stdout.write(require('./Frontend/package.json').version)\\\"\",\r\n          \"captureAs\": \"FRONT_VERSION\"\r\n        }\r\n      ],\r\n      \"command\": \"sshpass -p ${SSH_PASS} ssh ${DEPLOY_USER}@${SERVER_HOST} \\\"cd /var/www && ./deploy.sh ${BACK_VERSION} ${FRONT_VERSION}\\\"\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n---\r\n\r\n## Error handling\r\n\r\nWhen a command fails, VIT shows a clean message and saves the full stack trace to a temporary log file:\r\n\r\n```\r\n  ERROR   \"Tests\" failed (exit 1)\r\n\r\n  Log saved to:\r\n  C:\\Users\\user\\AppData\\Local\\Temp\\vit-logs\\vit-error-1745678912345.log\r\n```\r\n\r\nLogs are saved in `{tmpdir}/vit-logs/` with the format `vit-error-{timestamp}.log`.\r\n\r\n---\r\n\r\n## Requirements\r\n\r\n- Node.js >= 18\r\n- Git installed and configured\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}