{"_id":"@emdzej/inpax-ipo-editor","_rev":"14-832595aed621d522a7195a56f218400c","name":"@emdzej/inpax-ipo-editor","dist-tags":{"latest":"0.6.8"},"versions":{"0.1.0":{"name":"@emdzej/inpax-ipo-editor","version":"0.1.0","_id":"@emdzej/inpax-ipo-editor@0.1.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"31fc24f4c9f32e2d50618e72470acd2678a942be","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.1.0.tgz","fileCount":36,"integrity":"sha512-XOkX2s2uBdBpCfZr93en/16ERZJE8gaAhoA6duWGaJRxIpLVPhU670K2faGo6JdUVIDag9+VZlyHVokFH6GJ9A==","signatures":[{"sig":"MEYCIQD4aR26AV+/4FjExuaCAxH0Gxnb22GHbsKYUw48uBk6oQIhAKU9qD0OCHyE0WSQy26ahfPc9VE7gxJk4hgf0Rs0wQ0c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107702},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.1.0.tgz","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/020404d09e1f0435e064c8cbfabca783/emdzej-inpax-ipo-editor-0.1.0.tgz","_integrity":"sha512-XOkX2s2uBdBpCfZr93en/16ERZJE8gaAhoA6duWGaJRxIpLVPhU670K2faGo6JdUVIDag9+VZlyHVokFH6GJ9A==","_npmVersion":"10.9.4","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.1.0","@emdzej/inpax-parser":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.1.0_1778595360742_0.9112243095988772","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@emdzej/inpax-ipo-editor","version":"0.2.0","_id":"@emdzej/inpax-ipo-editor@0.2.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"9ab79c2541b2b33f60ddb6b344c8a55dd1002665","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.2.0.tgz","fileCount":36,"integrity":"sha512-OwQOvmmGUB2uL4Jd4WkNH+pQBMEaHRIm7ZXYDEUd4Xd/J3RKO5m4vkkPKqpSamTCFaRe4dnb8SCaqyeeO/nDKw==","signatures":[{"sig":"MEUCIDueMTXt2JkqGeEyhzImZOU5pEkiOA2bYYA+Vb0PJipqAiEAgI4Fz8JLS+/aGr1W0p+DtyMPvawUCAaWAFG/GZg5LRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107702},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.2.0.tgz","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/c8ab10072ebba613f97c641a34f9328b/emdzej-inpax-ipo-editor-0.2.0.tgz","_integrity":"sha512-OwQOvmmGUB2uL4Jd4WkNH+pQBMEaHRIm7ZXYDEUd4Xd/J3RKO5m4vkkPKqpSamTCFaRe4dnb8SCaqyeeO/nDKw==","_npmVersion":"10.9.4","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.2.0","@emdzej/inpax-parser":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.2.0_1778766879268_0.4310124114965397","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@emdzej/inpax-ipo-editor","version":"0.3.0","_id":"@emdzej/inpax-ipo-editor@0.3.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"1aaccf90aa07133470eb7b041d17beea7a873297","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.3.0.tgz","fileCount":53,"integrity":"sha512-dRgZDGehHmJ2UqpAnYWB0Rm+H1aLs9s0j4ohHJfJ9eL/ySFG3fSbMb3DfvLpiGvL1YIsHEu4fuo6yr56wxQGtA==","signatures":[{"sig":"MEUCIG+cRTr/G2k86PsV+Hf9hfhRHrXuahJ7z1cGdbvS+l+IAiEAyJyj69HHf/cN4v0AKlTGTuwAe2J1WLqmSFex3mA4yk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165208},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.3.0.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/e183a1db55c6f5613748bc5c9054c18e/emdzej-inpax-ipo-editor-0.3.0.tgz","_integrity":"sha512-dRgZDGehHmJ2UqpAnYWB0Rm+H1aLs9s0j4ohHJfJ9eL/ySFG3fSbMb3DfvLpiGvL1YIsHEu4fuo6yr56wxQGtA==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.3.0","@emdzej/inpax-parser":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.3.0_1778831765217_0.31189695673029294","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@emdzej/inpax-ipo-editor","version":"0.3.1","_id":"@emdzej/inpax-ipo-editor@0.3.1","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"4228f3fefa644c1e88fbb9b4d4e96eca8670645c","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.3.1.tgz","fileCount":53,"integrity":"sha512-CQiu0KsPbCL4TXGJy3h4JKlSOJnCBHLe6ZmrX9IQ/BZweCJa9mRiUCIj5lpk10Wzazh2kUaH78BnGyE56DBodQ==","signatures":[{"sig":"MEUCIQCZdYmdxGfPGc5zrq5aYqWxYmxQFf/r1MJIqJ/t8QxbLgIgV1sb4igtn862L1nJ524fPfrss00tL35c9Cs3JhyoCkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165208},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.3.1.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/ec82bcdc2950d43de9a307f90174fc1a/emdzej-inpax-ipo-editor-0.3.1.tgz","_integrity":"sha512-CQiu0KsPbCL4TXGJy3h4JKlSOJnCBHLe6ZmrX9IQ/BZweCJa9mRiUCIj5lpk10Wzazh2kUaH78BnGyE56DBodQ==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.3.1","@emdzej/inpax-parser":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.3.1_1778843605278_0.4759735795451825","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@emdzej/inpax-ipo-editor","version":"0.3.2","_id":"@emdzej/inpax-ipo-editor@0.3.2","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"06fbedab929f459dfd8aed5e86361b588c768094","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.3.2.tgz","fileCount":53,"integrity":"sha512-eKEvbKyWUX3YOv49lkd7L1337apFzQsJEXThxe+N1uUuKmAZS2eyBbvgKgguBeJFJqhPNEWpHqWMhbNJQOszwA==","signatures":[{"sig":"MEUCIFVtElke9iuypvo8TK8HOQ1IUnw3mM5hzWk81ab0Jq86AiEAg16tH1aFNiuGxl1a6odOVQcP3ra88AUlUzyGV9p1iHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165208},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.3.2.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/b03036eab3c3c8b2ee1ec209b48b0134/emdzej-inpax-ipo-editor-0.3.2.tgz","_integrity":"sha512-eKEvbKyWUX3YOv49lkd7L1337apFzQsJEXThxe+N1uUuKmAZS2eyBbvgKgguBeJFJqhPNEWpHqWMhbNJQOszwA==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.3.2","@emdzej/inpax-parser":"0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.3.2_1778851118109_0.37688670968991667","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@emdzej/inpax-ipo-editor","version":"0.3.3","_id":"@emdzej/inpax-ipo-editor@0.3.3","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"786d3cf622d62a48b8747ddbff31024897bc61d2","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.3.3.tgz","fileCount":53,"integrity":"sha512-mxsvPEzDWIorNj+DCuTJggfBux5rI7RYVvCbKqk5VZWOu9mWXgQVH6kb1cErjcNWGIq1eoA0Ulz9eX+sgv56FQ==","signatures":[{"sig":"MEUCIQD+rQcJhK7jUTpQidOptYh+xNAThPBCQZpXMAn6y2teQAIgL0KwRXOm3LV78gpQjtq7RD4WqSI6vOX7ugWUr2Lr6yE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165208},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.3.3.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/31bf20a95611d22dadc4b5412cb101d8/emdzej-inpax-ipo-editor-0.3.3.tgz","_integrity":"sha512-mxsvPEzDWIorNj+DCuTJggfBux5rI7RYVvCbKqk5VZWOu9mWXgQVH6kb1cErjcNWGIq1eoA0Ulz9eX+sgv56FQ==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.3.3","@emdzej/inpax-parser":"0.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.3.3_1778863728457_0.6275959535186029","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@emdzej/inpax-ipo-editor","version":"0.4.0","_id":"@emdzej/inpax-ipo-editor@0.4.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"7207a19211a1449aa7dc12521cc1944d8dcf3283","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.4.0.tgz","fileCount":53,"integrity":"sha512-h+MPu2nr7BuhtGQzEhKQkz8GOSqlmlNdT/psdrjGpxzLU4c2kiNjtCdE7f8NOtotWwmyL+fNrLa5dj0nyXpaGw==","signatures":[{"sig":"MEQCIE0QbnENAnl6te9yyBYMZpf5psBbXLwng9n6eQqEx9VwAiAvv6M6DGAjIh6bj5SuCDQkwgUdt2uOKgobg/PaamJ8IA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165208},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.4.0.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/a1c9852278104f3cf94e12bb1e2a1838/emdzej-inpax-ipo-editor-0.4.0.tgz","_integrity":"sha512-h+MPu2nr7BuhtGQzEhKQkz8GOSqlmlNdT/psdrjGpxzLU4c2kiNjtCdE7f8NOtotWwmyL+fNrLa5dj0nyXpaGw==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.4.0","@emdzej/inpax-parser":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.4.0_1779094133244_0.627529101569755","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@emdzej/inpax-ipo-editor","version":"0.5.0","_id":"@emdzej/inpax-ipo-editor@0.5.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"36fac5feb7456ea11b1cafc7671afc0fb3df9cf8","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.5.0.tgz","fileCount":53,"integrity":"sha512-lTvIGbyOzpYjdvNn4SWTObfvt69QI/gRPE9jRByqtnmxNHQLW+JZ6Psh0Gx0e5RMIMX7E6UoRodMz9RymzFY9Q==","signatures":[{"sig":"MEUCIQDjco7IUWOZ75qP923Verm9ROG5RV3bccZvPpvj5U5hdAIgBUyJV6jOqPyK33vQ3uVBqhqLVRyC7c5tcIR71V0cuvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165377},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.5.0.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/8756417d31596851e4297951c9a1b685/emdzej-inpax-ipo-editor-0.5.0.tgz","_integrity":"sha512-lTvIGbyOzpYjdvNn4SWTObfvt69QI/gRPE9jRByqtnmxNHQLW+JZ6Psh0Gx0e5RMIMX7E6UoRodMz9RymzFY9Q==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.5.0","@emdzej/inpax-parser":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.5.0_1779191224486_0.22944171041824468","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@emdzej/inpax-ipo-editor","version":"0.5.1","_id":"@emdzej/inpax-ipo-editor@0.5.1","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"8dec0c44fa19971c425c51386f96c329a6870090","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.5.1.tgz","fileCount":53,"integrity":"sha512-Y9vWlBduQGFCdFBzu02A5Tp1njjRP5IeNPI2Pavb37eqpICnUQE8hkOQL5DwX2VkasBj7IMHomFEdPI7f94K+A==","signatures":[{"sig":"MEYCIQDUFPsGp7iyp/3xEcuU/GPhG+w0+8OCoH7S0hlm7hrq5AIhAPi7SFIKaal7YBUy0MdAB5njA3dFDxAEOR5bdW1v4PRi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165377},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.5.1.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/f401dc44d8d01f9b1da0fe0996e32a67/emdzej-inpax-ipo-editor-0.5.1.tgz","_integrity":"sha512-Y9vWlBduQGFCdFBzu02A5Tp1njjRP5IeNPI2Pavb37eqpICnUQE8hkOQL5DwX2VkasBj7IMHomFEdPI7f94K+A==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.5.1","@emdzej/inpax-parser":"0.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.5.1_1779265252423_0.43047544900340773","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@emdzej/inpax-ipo-editor","version":"0.6.3","_id":"@emdzej/inpax-ipo-editor@0.6.3","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"ee45357f01dc1945115cd84cfbbf7a0504775d88","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.6.3.tgz","fileCount":53,"integrity":"sha512-1pFRKtxRNExNyPiE7dWygjoqp0t5yP0xotvSZ6lcW4QgSJ8gh2hTzC/bD3bAjYNdvvt80VPFslR1iJklvzVi6g==","signatures":[{"sig":"MEYCIQDoflfppeQoyisnHxRYmCxN17L4Tvg+RiYH3BRJA1PmAQIhAKHPZbnn9G/necSzO0eyImt3owpj7gCFRRdkmKJ0lvSa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165377},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.6.3.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/0ee56dfb1f7f0ea229eba03c7d02e0db/emdzej-inpax-ipo-editor-0.6.3.tgz","_integrity":"sha512-1pFRKtxRNExNyPiE7dWygjoqp0t5yP0xotvSZ6lcW4QgSJ8gh2hTzC/bD3bAjYNdvvt80VPFslR1iJklvzVi6g==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.6.3","@emdzej/inpax-parser":"0.6.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.6.3_1779359510763_0.04686434311276155","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@emdzej/inpax-ipo-editor","version":"0.6.5","_id":"@emdzej/inpax-ipo-editor@0.6.5","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"2488c5e372e322e3fed6f462de98a5dea95f80c9","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.6.5.tgz","fileCount":53,"integrity":"sha512-skzC2qVRgjs83EcwThvsqEop6YfnxxbWBdZH2X7TQZ/KsOhaVhZdszh8FMlybYqkcwSBUGjY+UtayWm9EaTIMQ==","signatures":[{"sig":"MEUCIGgrPub31YKR5MGc6KpEK7ZKE/NQLVvX87WTnRxFIL1iAiEAy2oJ0SurUjcfIbkCQ5Gj3+cX6l+sGwdx0IRKTGUj1IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165377},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.6.5.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/bb805543c405a6d5dadba7184af7abb9/emdzej-inpax-ipo-editor-0.6.5.tgz","_integrity":"sha512-skzC2qVRgjs83EcwThvsqEop6YfnxxbWBdZH2X7TQZ/KsOhaVhZdszh8FMlybYqkcwSBUGjY+UtayWm9EaTIMQ==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.6.5","@emdzej/inpax-parser":"0.6.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.6.5_1779371855246_0.8004057076261484","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"@emdzej/inpax-ipo-editor","version":"0.6.6","_id":"@emdzej/inpax-ipo-editor@0.6.6","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"b1de1f5747a874543a92acf66b3312d35def2fda","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.6.6.tgz","fileCount":53,"integrity":"sha512-ZuwOWmXcwyyc6eSMZaQ3zdTQ9PlhYV3H+Rn+S5vrpTsJUvTZHIWhdQJUjhftPPbsw1UUCA0prnU6hvmY89ZH4A==","signatures":[{"sig":"MEQCIC2khX8L/Ry4YZ0ijMIPJP7PgDjgLWOOmAXsyw5RUGzJAiA6Z+FwD+OUdVK3lgaJoBLcJ7dSQmSKoZue5poas5d1fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165377},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.6.6.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/6d23ac3775cdfb818844111a25696475/emdzej-inpax-ipo-editor-0.6.6.tgz","_integrity":"sha512-ZuwOWmXcwyyc6eSMZaQ3zdTQ9PlhYV3H+Rn+S5vrpTsJUvTZHIWhdQJUjhftPPbsw1UUCA0prnU6hvmY89ZH4A==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.6.6","@emdzej/inpax-parser":"0.6.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.6.6_1779372902735_0.9982339913617198","host":"s3://npm-registry-packages-npm-production"}},"0.6.7":{"name":"@emdzej/inpax-ipo-editor","version":"0.6.7","_id":"@emdzej/inpax-ipo-editor@0.6.7","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"bin":{"ipo-editor":"dist/index.js"},"dist":{"shasum":"8c70816697a861b62ccc13728e6af239430b46fb","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.6.7.tgz","fileCount":53,"integrity":"sha512-wdth2Z6v9IG6rMZNy4A/Umfb51vYDltcbG2b+TbytWj0fNA5nmMHeKiD9v+Hm2Tpv1FL1kscphcOwCje7xiEWQ==","signatures":[{"sig":"MEUCIGkE4J7MhJsOW5LtQNWTOD+SpZylJrRN7GnL8xq1eCpGAiEAw40+qpZT63HnkFVSlr4gF0g2kYjPRaJGF8Gl0/Pss9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165377},"main":"dist/index.js","type":"module","_from":"file:emdzej-inpax-ipo-editor-0.6.7.tgz","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/44cd89af8f6e4705061395df26a8445d/emdzej-inpax-ipo-editor-0.6.7.tgz","_integrity":"sha512-wdth2Z6v9IG6rMZNy4A/Umfb51vYDltcbG2b+TbytWj0fNA5nmMHeKiD9v+Hm2Tpv1FL1kscphcOwCje7xiEWQ==","_npmVersion":"11.14.1","description":"Terminal UI for editing constants in compiled INPA .ipo files","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ink":"^5.1.0","zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","react":"^18.3.1","commander":"^12.0.0","iconv-lite":"^0.6.3","@emdzej/inpax-core":"0.6.7","@emdzej/inpax-parser":"0.6.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/inpax-ipo-editor_0.6.7_1779426951338_0.9048435395595247","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"@emdzej/inpax-ipo-editor","version":"0.6.8","description":"Terminal UI for editing constants in compiled INPA .ipo files","type":"module","main":"dist/index.js","bin":{"ipo-editor":"dist/index.js"},"dependencies":{"chalk":"^5.3.0","commander":"^12.0.0","iconv-lite":"^0.6.3","ink":"^5.1.0","react":"^18.3.1","yaml":"^2.6.0","zod":"^3.23.0","@emdzej/inpax-core":"0.6.8","@emdzej/inpax-parser":"0.6.8"},"devDependencies":{"@types/node":"^22.0.0","@types/react":"^18.3.0","typescript":"^5.7.0","vitest":"^2.1.0"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","dev":"tsc --watch","clean":"rm -rf dist","test":"vitest run"},"_id":"@emdzej/inpax-ipo-editor@0.6.8","_integrity":"sha512-t4x2H21FXYCOxXY37xl5bNbsdtDM76jivUjXXtDWWGanfA8PhhIT2KXAAoI0ihlwA9LmrB9wa1aNprv7jry68g==","_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/ddf723b0b0bd83000c5c44801dc44e9d/emdzej-inpax-ipo-editor-0.6.8.tgz","_from":"file:emdzej-inpax-ipo-editor-0.6.8.tgz","_nodeVersion":"22.22.1","_npmVersion":"11.14.1","dist":{"integrity":"sha512-t4x2H21FXYCOxXY37xl5bNbsdtDM76jivUjXXtDWWGanfA8PhhIT2KXAAoI0ihlwA9LmrB9wa1aNprv7jry68g==","shasum":"f19f796c57bacb5b0e498c20e3fe527d899a4d83","tarball":"https://registry.npmjs.org/@emdzej/inpax-ipo-editor/-/inpax-ipo-editor-0.6.8.tgz","fileCount":53,"unpackedSize":165377,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDjnqTSe6MlFZQhLw/fqJ7tGHc3fqjGGawsNy/W62XJ8AiEAh41CDoQ4lilrfZifsUGZnwsxoekfCJpjEG6/JnGCkrQ="}]},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"directories":{},"maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/inpax-ipo-editor_0.6.8_1779443546432_0.49615793237086225"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-12T14:16:00.635Z","modified":"2026-05-22T09:52:26.741Z","0.1.0":"2026-05-12T14:16:00.953Z","0.2.0":"2026-05-14T13:54:39.395Z","0.3.0":"2026-05-15T07:56:05.459Z","0.3.1":"2026-05-15T11:13:25.413Z","0.3.2":"2026-05-15T13:18:38.263Z","0.3.3":"2026-05-15T16:48:48.594Z","0.4.0":"2026-05-18T08:48:53.401Z","0.5.0":"2026-05-19T11:47:04.622Z","0.5.1":"2026-05-20T08:20:52.575Z","0.6.3":"2026-05-21T10:31:50.911Z","0.6.5":"2026-05-21T13:57:35.392Z","0.6.6":"2026-05-21T14:15:02.949Z","0.6.7":"2026-05-22T05:15:51.859Z","0.6.8":"2026-05-22T09:52:26.568Z"},"description":"Terminal UI for editing constants in compiled INPA .ipo files","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"readme":"# @emdzej/inpax-ipo-editor\n\nTerminal UI for editing constants in compiled INPA `.ipo` files, plus a\npatch system for distributing changes (translations, overrides) without\nshipping the modified IPO itself.\n\n## What it does\n\nINPA scripts (`.IPO`) carry their string literals, numeric constants,\nand other compile-time values in a **constant data block**. Translating\na script's UI labels, swapping in different default thresholds, or\ncorrecting a typo doesn't require recompiling from `.IPS` source —\nthose bytes can be rewritten in place.\n\nThis tool gives you three ways to do that:\n\n1. **TUI editor** — interactive, browse-and-edit with filters,\n   keyboard navigation, undo, and per-string codepage handling.\n2. **Patch `init`** — dump an IPO's constants into a human-readable\n   YAML file ready for a translator to edit.\n3. **Patch `apply`** — apply one or more patch files to an IPO with\n   SHA-256 verification, type-checking, and conflict resolution.\n\n## Install / build\n\n```bash\npnpm --filter @emdzej/inpax-ipo-editor build\n```\n\nAfter build the binary is at `dist/index.js` and is registered via\n`bin`, so `pnpm exec ipo-editor` works inside the workspace.\n\n## Commands\n\n### `ipo-editor edit <file>` (default)\n\nOpen a `.ipo` in the TUI for interactive editing. Works without a\nsubcommand — `ipo-editor RADIO.IPO` is shorthand for\n`ipo-editor edit RADIO.IPO`.\n\n```bash\npnpm exec ipo-editor RADIO.IPO\n\n# Read-only browse\npnpm exec ipo-editor RADIO.IPO --readonly\n\n# Different codepage (e.g. files that were edited under cp1250)\npnpm exec ipo-editor RADIO.IPO --codepage cp1250\n\n# No .bak file on save\npnpm exec ipo-editor RADIO.IPO --no-backup\n```\n\n#### TUI keymap (list mode)\n\n| Key | Action |\n|---|---|\n| `↑` / `↓` / `j` / `k` | Move cursor |\n| `PgUp` / `PgDn` | Page |\n| `g` / `G` | Jump to first / last |\n| `/` | Substring filter |\n| `t` | Cycle type filter (all → string → number → bool) |\n| `m` | Show modified only |\n| `Enter` | Edit current constant |\n| `u` / `U` | Undo / undo all |\n| `s` | Save (overwrites the `.ipo`) |\n| `P` | **Save edits as a patch (`<file>.patch.yaml`)** |\n| `q` | Quit |\n| `?` | Toggle help |\n\n### `ipo-editor patch init <file>`\n\nEmit a starter patch file containing every (filtered) constant from\nthe IPO. The translator opens the YAML, changes `value:` fields, and\nhands the patch back.\n\n```bash\n# Default: only string constants, no notes\npnpm exec ipo-editor patch init RADIO.IPO -o radio.patch.yaml\n\n# Include numeric constants too\npnpm exec ipo-editor patch init RADIO.IPO --types string,int,real -o radio.patch.yaml\n\n# Add per-entry hints (offset / byte length info)\npnpm exec ipo-editor patch init RADIO.IPO --with-notes -o radio.patch.yaml\n\n# Stamp install-tree + description metadata\npnpm exec ipo-editor patch init RADIO.IPO \\\n  --location inpa \\\n  --description 'Polish translation of MS43 status screens' \\\n  -o radio-pl.patch.yaml\n```\n\nOptions:\n\n| Flag | Default | Description |\n|---|---|---|\n| `-o, --output <path>` | `<file>.patch.yaml` | Output path |\n| `--input-encoding <name>` | `cp1252` | Codepage used to decode IPO strings |\n| `--target-encoding <name>` | `cp1252` | Codepage strings will be encoded into when applied |\n| `--types <list>` | `string` | Comma-separated: `bool`, `byte`, `int`, `long`, `real`, `string` |\n| `--with-notes` | off | Add per-entry offset / length notes |\n| `--location <name>` | `unknown` | Install-tree tag (`inpa`, `nfs`, `ncsexpert`, …) |\n| `--description <text>` | — | Free-form description carried in the patch |\n\n### `ipo-editor patch apply <file> <patch>…`\n\nApply one or more patches to an IPO. Verifies each patch's SHA-256\nagainst the actual IPO (override with `--ignore-checksum`), refuses\non type mismatches (never overridable — that would corrupt bytes),\nand decides how to handle overlapping entries via `--on-conflict`.\n\n```bash\n# Single patch, overwrites the source IPO\npnpm exec ipo-editor patch apply RADIO.IPO radio-pl.patch.yaml\n\n# Apply to a fresh copy\npnpm exec ipo-editor patch apply RADIO.IPO radio-pl.patch.yaml -o RADIO-pl.IPO\n\n# Multiple patches in one go (e.g. translation + threshold overrides)\npnpm exec ipo-editor patch apply RADIO.IPO \\\n  radio-pl.patch.yaml \\\n  radio-thresholds.patch.yaml \\\n  -o RADIO-pl-tuned.IPO\n\n# Dry run — verify and report what would change, write nothing\npnpm exec ipo-editor patch apply RADIO.IPO radio-pl.patch.yaml --dry-run\n\n# Last-wins overlap (e.g. you want a later patch to override an earlier one)\npnpm exec ipo-editor patch apply RADIO.IPO base.patch.yaml override.patch.yaml \\\n  --on-conflict last-wins\n\n# Apply a stale patch anyway (file changed since the patch was made)\npnpm exec ipo-editor patch apply RADIO.IPO old.patch.yaml --ignore-checksum\n```\n\nOptions:\n\n| Flag | Default | Description |\n|---|---|---|\n| `-o, --output <path>` | overwrite input | Output IPO path |\n| `--dry-run` | off | Verify + report only, write nothing |\n| `--ignore-checksum` | off | Apply even if checksum mismatches (warns) |\n| `--on-conflict <policy>` | `refuse` | `refuse` (error on overlap) or `last-wins` |\n| `--input-encoding <name>` | `cp1252` | Codepage to decode source IPO |\n| `--output-encoding <name>` | patch's `target_encoding` | Override the patch's declared encoding |\n\n## Patch file format\n\nYAML, UTF-8, one document per file:\n\n```yaml\ninpax_patch_version: 1\noriginal:\n  name: RADIO.IPO\n  location: inpa\n  checksum:\n    algorithm: sha256\n    value: 8b3edfee580000ac8b71b79660daf2cdb922e4ab511ab82bd77def28b89e3341\ntarget_encoding: cp1252\ndescription: |\n  Polish translation of MS43 status screens\ncreated_at: 2026-05-15T07:21:26.402Z\npatches:\n  - index: 13\n    type: string\n    value: Hauptmenü\n    notes: |\n      const[13] in inpainit, top of main menu\n  - index: 15\n    type: string\n    value: Info\n```\n\nThe `original.checksum` stamps the IPO this patch was generated\nagainst. When multiple patches target the same IPO, every patch's\nexpected checksum must match the *current* input file (so all\npatches were authored against the same base — order of application\ndoesn't matter for the checksum gate).\n\nType mismatches are **never** overridable: a patch claiming `type: string`\napplied to an `int` constant would silently corrupt the file. Apply\nrefuses such patches.\n\n## Common workflows\n\n### Translation\n\n```bash\n# 1. Generate a starter patch listing every string in the IPO.\npnpm exec ipo-editor patch init RADIO.IPO --with-notes -o radio-pl.patch.yaml\n\n# 2. Hand the YAML to a translator. They change `value:` fields; the\n#    `notes:` lines tell them where each string lives.\n\n# 3. Apply the result to a fresh copy.\npnpm exec ipo-editor patch apply RADIO.IPO radio-pl.patch.yaml -o RADIO-pl.IPO\n```\n\n### TUI edit → patch (preferred for ad-hoc fixes)\n\n```bash\n# 1. Open the IPO in the TUI, make changes interactively.\npnpm exec ipo-editor RADIO.IPO\n\n# 2. Inside the TUI: press `P` to export edits as RADIO.IPO.patch.yaml.\n#    The original .ipo is untouched.\n\n# 3. Apply later, on this or another machine.\npnpm exec ipo-editor patch apply RADIO.IPO RADIO.IPO.patch.yaml -o RADIO-edited.IPO\n```\n\n### Layered overlays\n\n```bash\n# Base translation + a small override that fixes one term\npnpm exec ipo-editor patch apply RADIO.IPO \\\n  base-de.patch.yaml \\\n  fix-typo.patch.yaml \\\n  --on-conflict last-wins \\\n  -o RADIO-fixed.IPO\n```\n\n## Encoding caveat\n\nReal INPA.exe **always** reads `.ipo` string constants as cp1252,\nbecause the IPO format has no embedded encoding marker. If you set\n`target_encoding` to anything other than `cp1252` (e.g. `cp1250` for\nPolish characters), the patcher will:\n\n- Encode bytes correctly per your declared encoding,\n- Warn loudly at both `init` and `apply` time,\n- Produce a file that **stock INPA misrenders** (it'll read your\n  cp1250 bytes as cp1252 — `ł` becomes `³`, `ó` becomes `ó`, etc.).\n\nOur own runtime (`inpax-web`, `inpax-cli`) can read non-cp1252 IPOs\nwith `--input-encoding cp1250`, but stock INPA can't. The full\nexplanation lives in\n[`docs/research/ipo-encoding.md`](../../docs/research/ipo-encoding.md).\n\nFor practical purposes: **keep `target_encoding` at `cp1252` unless\nyou're consciously targeting our forked runtime**.\n\n## Development\n\n```bash\npnpm --filter @emdzej/inpax-ipo-editor build      # tsc\npnpm --filter @emdzej/inpax-ipo-editor test       # vitest (46 tests)\npnpm --filter @emdzej/inpax-ipo-editor dev        # tsc --watch\n```\n\nPatch logic + tests live under `src/patch/`. The TUI lives under\n`src/components/`. They share `src/lib/walker.ts` (IPO parser),\n`src/lib/codepage.ts` (encoding helpers) and `src/lib/save.ts`\n(byte-preserving writer).\n","readmeFilename":"README.md"}