{"_id":"fatmux","_rev":"32-132f621daabfb9a416e52f334688199e","name":"fatmux","dist-tags":{"latest":"2026.6.24-2"},"versions":{"2026.4.30-1":{"name":"fatmux","version":"2026.4.30-1","_id":"fatmux@2026.4.30-1","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fmux":"fmux.js"},"dist":{"shasum":"72ea3d2cc21b95011f9788a571ecc36d0479dd99","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-1.tgz","fileCount":94,"integrity":"sha512-UR4Iyc7RhrVYCMWSBJ41BjmMDTu5EPwYOxLn907LJiHnQHiQ/aR2yllt2dXsRqpaS7pC59D5Fa24JIo5/2aCrw==","signatures":[{"sig":"MEYCIQC7whm14io2OfoJzFl/KhAo+1BR/PWx0ai2Lr7cLWQ+IAIhAItAhB4u4gYQIUxeJ3KQtvmAtHO86rzAFhmgbgDf6Spy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1279838},"type":"module","gitHead":"dc0f1ec5418c5be0dd630ec7cf3b07be79cfebb1","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fmux/shared && npm run test -w @fmux/server","build":"npm run build -w @fmux/shared && npm run build -w @fmux/web && npm run build -w @fmux/server","check":"npm run check -w @fmux/shared && npm run check -w @fmux/server && npm run check -w @fmux/web","start":"node app/server/dist/index.js","test:e2e":"playwright test","check:npm-name":"node scripts/check-npm-name.js"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"Browser-first local workspace for project terminals, source control, and Claude/Codex chat sessions.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-1_1777543137592_0.19677757950712738","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-2":{"name":"fatmux","version":"2026.4.30-2","_id":"fatmux@2026.4.30-2","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"8fa7502a4e961f282859d858d374b38c7d75822a","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-2.tgz","fileCount":92,"integrity":"sha512-mqO4mcV910n9jHbrE3PsGyiEOw5gu5E7AG4CKntBzzc5Z4KKeBHJ8DqWYs325q2j2F0jmpVP9iJJ7oBvcdbamQ==","signatures":[{"sig":"MEUCIFQP0L+X3HC8UstWPl2CaK0Vwk/uvaq7gFGP2llw9serAiEAsD+K0GXVSsRtrNebtNVYBxrstJ6SDQo5zUA0EoDlpIY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":976750},"type":"module","gitHead":"8c30af17d2689e3c5ced45ed70ca9ca2264852e5","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","test:e2e":"playwright test"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"Browser-first local workspace for project terminals, source control, and Claude/Codex chat sessions.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-2_1777543653437_0.09170058792127445","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30":{"name":"fatmux","version":"2026.4.30","_id":"fatmux@2026.4.30","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"f22896ed8563c1881e01f63e0fcd4b42df751f87","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30.tgz","fileCount":94,"integrity":"sha512-YZ1OXEvXIPgAUNp7dBDqELMYQt53YyafqRGoS6DQHDSsUn8OW5IMGvV2xYALOXJmNK2/Go0OveW2drYGsTC2Ag==","signatures":[{"sig":"MEUCIQC0xTMSe+2NKl442YsbnQdpnIEUeJkh9oN3zZWSrWgZ8AIgOZXpIvo4157ZfGs3G4N5+6/uAr6iqnQCNqI+IfBuc3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":997031},"type":"module","gitHead":"b7ecb2e0cce7aeeafea7430117e7621c87398438","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","test:e2e":"playwright test","preversion":"npm run check && npm run build","release:major":"npm version major -m \"chore(release): %s\" && npm publish","release:minor":"npm version minor -m \"chore(release): %s\" && npm publish","release:patch":"npm version patch -m \"chore(release): %s\" && npm publish"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"Browser-first local workspace for project terminals, source control, and Claude/Codex chat sessions.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30_1777546134032_0.8039464757177446","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-4":{"name":"fatmux","version":"2026.4.30-4","_id":"fatmux@2026.4.30-4","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"1f85c067196bdbb27d778b8ca47713c01d660be6","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-4.tgz","fileCount":95,"integrity":"sha512-0qys/aPnLeVKpzAvxoeK9modFAE95cS9ch6XgZWoHHYjNBFpUOBGiuIXm3caNVbJS9IZk9LhjJnyg3gTiHKeAA==","signatures":[{"sig":"MEUCIAnjL2Fg6GVFnZC/VNUa15QiLHY9z50AaczuLumqu4eeAiEAgXHSoeZcUoM177LX86SRZv1CLIM1CVv00TXKcpI2tJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":998591},"type":"module","gitHead":"a3a6189c932858acb3c3cf34ff7bb3baae9d4559","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","release":"npm run release:version && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"Browser-first local workspace for project terminals, source control, and Claude/Codex chat sessions.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-4_1777546455508_0.9008463613899387","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-5":{"name":"fatmux","version":"2026.4.30-5","license":"Apache-2.0","_id":"fatmux@2026.4.30-5","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"b19b5937e4df873d0834a823c6d151649c0116aa","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-5.tgz","fileCount":5,"integrity":"sha512-NhOGdApIT2Hjm4UQ9ct9o4PK6E87pG5MdLJH5ZDe3KONVcgoLLuYc+qQVnBvacKrAF7Vg4WwYXet8IhIyxSf1g==","signatures":[{"sig":"MEUCIQD2ZtgDNfqQZ+9lqIlwgy/ROgcddbTBQn92VRSEu6ZWdQIgB54igTwNv4A75QO1rx6WkbHtq8iTu1JebcGpRdoTr5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147129},"type":"module","gitHead":"c3e4440c7e427448fe041c248de739c526309b0d","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-5_1777548657994_0.6831886731230536","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-6":{"name":"fatmux","version":"2026.4.30-6","license":"Apache-2.0","_id":"fatmux@2026.4.30-6","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"f929a23a23c1fcfbabd091402bb50cd6144ed06f","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-6.tgz","fileCount":5,"integrity":"sha512-1S8+fEIvlifhlFgJWhTlybHhophlhHabHRHFHwSSr3ROzrqa2P/LOmQVQPzM6uV8BO5HDka2aIOCcMjksmHMEw==","signatures":[{"sig":"MEQCIHVFgrOIlCHmVn2pT4FCuaO8i37FRs9HQoPlS3MhxVUBAiA+lppCWWBrHFzC4aqJpVHKvyDzJaDEPxYLnJlIVcxdMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":833316},"type":"module","gitHead":"1278d5cfdce6b041ec4e276985a5b815464f86d0","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-6_1777549222990_0.651260818714906","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-7":{"name":"fatmux","version":"2026.4.30-7","license":"Apache-2.0","_id":"fatmux@2026.4.30-7","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"636ab31b0442b74dccec9f9db9f5e1ed49f99790","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-7.tgz","fileCount":5,"integrity":"sha512-1wNjnlWtnCByrKMjyfT9yU/vaA0y7cdBt6OmcKtGkhCs4JSHRqmrNvkFuVowZcGN0XfDyVmeicWVrGp1x6ne9w==","signatures":[{"sig":"MEUCIApdm2CjpxevY9YA9swJJuVvjDx8U4Sk98flrFQCG2nDAiEA3PLLXnETYnUxwNCKhU77nUCDStb6aDf6t0N726h4ez8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":800390},"type":"module","gitHead":"1525b22a3292bdbe70d2bcb011976b36d0ed0326","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-7_1777549709243_0.37666022065995763","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-8":{"name":"fatmux","version":"2026.4.30-8","license":"Apache-2.0","_id":"fatmux@2026.4.30-8","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"7e299b5f3e8425686bd83fc38a4568d9b444e8c1","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-8.tgz","fileCount":227,"integrity":"sha512-rsXD+fiEtXEiTEWl0FbEe7ibZZd+K6SEheEKQjpsM+nEzjWL56u/SFifUU39wAF+xgIzcT3dbEx+qVON9ToA9A==","signatures":[{"sig":"MEUCIQDOOpXBR1/1gKjh1HT1ohBpBys76Ut3hDu8Ss4GdaPISwIgJtB3+11QxkpxZCx3gm/CNGZfX+Roc0q8FjOKoxCrwsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4882797},"type":"module","gitHead":"2ce41574a96eb3f4918d407fb3743f65f2a5da87","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-8_1777550367773_0.9924116458028414","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-9":{"name":"fatmux","version":"2026.4.30-9","license":"Apache-2.0","_id":"fatmux@2026.4.30-9","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"9df7a1841f3695050e1fa8c64549ab268975feb8","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-9.tgz","fileCount":227,"integrity":"sha512-T/1T+boUBjPdVkGFvZoY4aE+PJl3ugTO8ARgzh5QzP5g4fHT8vy108WmDdfWzW9UjQpPedOb+JDlIW+ZGAbHcQ==","signatures":[{"sig":"MEUCIQC1Kisk7F1uy6z2Xy8OnOkQJQBuI4NTVB2ir92hRoAffAIgSf32TxZ5bJdO+sUKwLGObEbbFci3nMkRuMFYl3Gnq/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4882887},"type":"module","gitHead":"784158974b1a1a1afa33e5c1ce7abfe16d7fb10a","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-9_1777550896494_0.6170840525111114","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-10":{"name":"fatmux","version":"2026.4.30-10","license":"Apache-2.0","_id":"fatmux@2026.4.30-10","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"f3be8e6367c3e194440144d18c9f04dd7ab27470","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-10.tgz","fileCount":229,"integrity":"sha512-+0PbbyOVbzjmTzfChy5oafIwYMXCumfVBb3UIHjzIf0xIyavwHkBSc79QHkzpW0sUB0WbrNkioHDrGeAki8Z5Q==","signatures":[{"sig":"MEUCIEzMzNsrfrhmjknyRTeH+nI8IUn174OwCHf6jGrO/1POAiEA087Dbz1R1qX0hqXTvGritcDQ0AdXvNGwHQaowNlYFxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4905785},"type":"module","gitHead":"d917a02555748f1289762d5fb993a38253ceae5c","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-10_1777551877177_0.2082179240364772","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-11":{"name":"fatmux","version":"2026.4.30-11","license":"Apache-2.0","_id":"fatmux@2026.4.30-11","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"ba9d0d5d57ab9ddd1ee33e2ff3080fe7f0cbca6a","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-11.tgz","fileCount":229,"integrity":"sha512-WYrSo6LEBldtadeX1bOXOReAa9+8TkmjAkZVbS5fd5MFv/NT0pGywuGfZnt+FZfx6nw2TuXwz4sI0nEToKpSjA==","signatures":[{"sig":"MEQCIAij0iLr0l11/64vukvU1gBWZaqDxZL+lGqy0OsU5ISZAiAdbqsFL6CsT7Tzt8DV1nfvXACQmaHQAe8wiTYYoYkblg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4906246},"type":"module","gitHead":"3d70d6a7947e8efd8a35279f1e8e1fdfb3ee7c31","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-11_1777552607844_0.5626347918597148","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-12":{"name":"fatmux","version":"2026.4.30-12","license":"Apache-2.0","_id":"fatmux@2026.4.30-12","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"161d4b61f20b3d49c4b83b76af40f947a63b2dee","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-12.tgz","fileCount":229,"integrity":"sha512-ElvQAkUQV8/q2xV4fxOp4U3vQUBHsD/OGn6G4Z68xraAUcrKju7gK0NW9B0L2d0OoH0clyFEAHHTbGNRcDEMag==","signatures":[{"sig":"MEQCIHb6aE0ag6bsIdEfstkGgvWCFS+8m2YUxqaQTnKOGv4XAiAs4UCzriFDc8SeikM5icDESYJmXd7nW8IybV4yVxTwgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4907369},"type":"module","gitHead":"3d6294ca6756d6b13d37e4be777e01bd8b26abec","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-12_1777553332316_0.44547658801620615","host":"s3://npm-registry-packages-npm-production"}},"2026.4.30-13":{"name":"fatmux","version":"2026.4.30-13","license":"Apache-2.0","_id":"fatmux@2026.4.30-13","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"87ee54e9bf2c6db9feb141262c9cea65f24803f6","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.4.30-13.tgz","fileCount":229,"integrity":"sha512-kPmNIG9pUpfbFJ4/TzOr3yzFf9MpPLmwNZs5M0NjCVcsYKyDsiNPDrkf4llbWZlaSLwO+GUwfoRN1M4+N0U1tA==","signatures":[{"sig":"MEYCIQDACiEAEs/YYQ1ao99LkpQel4+OaJal73KjHuuMNotC+AIhAOH0TMbdeswPEvUS5KdQXLhbT66Y90LH/xDjz66PfSxU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4908220},"type":"module","gitHead":"de33cf51db19feef1d39ec0075734bc508e48f89","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.4.30-13_1777554042842_0.3627086436946043","host":"s3://npm-registry-packages-npm-production"}},"2026.5.4":{"name":"fatmux","version":"2026.5.4","license":"Apache-2.0","_id":"fatmux@2026.5.4","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"d4f8750ab023fca4e18555ee8a7523481bd33060","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.4.tgz","fileCount":238,"integrity":"sha512-duFG9Yxsh+kNbYCmfqRKX56nL8gOF7m82D1lKT3cAECrOM7YPHFDN10vVTjp+zd3u+MPf78eQdMVSQngMDP9gg==","signatures":[{"sig":"MEUCIQDb9jBRTcr7FWJNyQI0wooGUc8eToPlIvKeGJzD63GPKwIgYHl2xKlO6dvDNZOcawgDYuDHDCJqA/RRjn70QRAPYI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4924577},"type":"module","gitHead":"e735c4e79d223ea32b8aaee2a10e191f3878ce30","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.4_1777890823417_0.03094557736728909","host":"s3://npm-registry-packages-npm-production"}},"2026.5.4-1":{"name":"fatmux","version":"2026.5.4-1","license":"Apache-2.0","_id":"fatmux@2026.5.4-1","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"baafd741274005249234c6257a0264bb5ae07be7","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.4-1.tgz","fileCount":242,"integrity":"sha512-KHdBYsAeQsUMVEu6c0RqPOt8ofIFBvxynzcNuRajRYnQpOKELand8R+jvID6rR8RmJXYhbHy7Vb6SiolcSrJUQ==","signatures":[{"sig":"MEQCIHfRKKmbpDAzWwkPKp/IsGo2gjlPsqkkM3yCqU3ZIPz9AiAN0putQD6V9KD8TPU9/UXlJa3k+jbP5XakRxdp11EUtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6158977},"type":"module","gitHead":"2c3fb9f989c9dc28426a1053233d1d63d9202e6e","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.4-1_1777903333749_0.6904066053490676","host":"s3://npm-registry-packages-npm-production"}},"2026.5.4-2":{"name":"fatmux","version":"2026.5.4-2","license":"Apache-2.0","_id":"fatmux@2026.5.4-2","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"cfc218c6861eb1edf2f31aebdc0057e49c3723ee","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.4-2.tgz","fileCount":242,"integrity":"sha512-Wy8EkCiYobMPXDqJl88JTPNg4dtgaDuV+EkVH641BlIwoAl8uz6tS9QayRXz4BWLhbqPnsQBJwMpKMrN6gTcOg==","signatures":[{"sig":"MEQCIGGJwqJdGawCPtEwRQRwfR8CApO9UpeXz8Rc87RfGZa0AiALZQQdd1SmPgvZ/ifonO6tJUzV1xMr5JVdLU3LNMqFBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6161210},"type":"module","gitHead":"30ab9950a662e2157ffe580bbf646ba521499898","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.11.0","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.4-2_1777905683610_0.5158316824750402","host":"s3://npm-registry-packages-npm-production"}},"2026.5.13":{"name":"fatmux","version":"2026.5.13","license":"Apache-2.0","_id":"fatmux@2026.5.13","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"d3f0058bdb8f031e9bd2ddaf75c6ca10f5474caf","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.13.tgz","fileCount":244,"integrity":"sha512-A5N+Opyc9l7qQ5VUWdJj3bvJSxHZ/eSgMRhCZ7/q1rBuXfV0AKnqiEkSWDQQr3YhFTkiBm74edKuzq+FoMIrvA==","signatures":[{"sig":"MEYCIQDDCXc8dNe4UuumGy9Em8J85YVw/Axm9hXRCwbK7Kh31gIhAL2ok4f37IKtK+nIuPPU81n3v63hZlc1KpAnkDIeNRIx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6498394},"type":"module","gitHead":"2cf549a5b40ad896884ef5aa72b09462069351b0","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.13_1778704702574_0.6101418578969564","host":"s3://npm-registry-packages-npm-production"}},"2026.5.13-1":{"name":"fatmux","version":"2026.5.13-1","license":"Apache-2.0","_id":"fatmux@2026.5.13-1","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"fc38a57e75f5e2eb0e5906b875a6b3a89999f184","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.13-1.tgz","fileCount":260,"integrity":"sha512-r+rmJlIX7BPz9qK2lDxyOzhDaItfMBPqxGx3rKtaJaKsMTpv6Zf1eDN+e23RR/+Q8pqGGN9Ai8kZTqx+qZZjVA==","signatures":[{"sig":"MEUCIQDTUvpbXEljmqM+HQn4WVm3qeEIDpbkaYGSzAyLApxOGQIgSOGFqYftm7XUT6NvRAT1qW/xqVXFt02s5uT9tjFLpnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7103761},"type":"module","gitHead":"8ccd9b4b071c67e7403d0bf63123790d8fe1d5b6","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.13-1_1778706223154_0.6420176395075918","host":"s3://npm-registry-packages-npm-production"}},"2026.5.20":{"name":"fatmux","version":"2026.5.20","license":"Apache-2.0","_id":"fatmux@2026.5.20","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"304e1a2c02eae558a5730e55f737416b1c648260","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.20.tgz","fileCount":276,"integrity":"sha512-ylZFKrCFkHXe/5TV21vOUOVzBw8po/hjq+6sdepoF1zws5nkwYreBQQoq3VZUGbKtFDkPhi7sjVux8NxDaYDUA==","signatures":[{"sig":"MEUCIQDQGgy96qaaciYaPkQgYy6wihxJGHlxFS4lLzQG6+V2uQIgb3AsM2yR96a2JWWi8Aag69oUluHIBqD1aab70Vvb5ck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7197112},"type":"module","gitHead":"90153e142047fa31743a07fd0b0587db2081c799","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.20_1779286070242_0.9311988071982429","host":"s3://npm-registry-packages-npm-production"}},"2026.5.26":{"name":"fatmux","version":"2026.5.26","license":"Apache-2.0","_id":"fatmux@2026.5.26","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"76666d75b8f2f363fff5858c0a7fa2dd2507eff5","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.26.tgz","fileCount":276,"integrity":"sha512-jTERNWKIfcBRAxxq8eqvdDOiXs/aeARcB26gI367y87nLkGPOiLs//DUnvSdMB7luxlQN1hmJFBWuJGhRz9qMg==","signatures":[{"sig":"MEQCICampTNUj9UOlPEKOOh994HCnCFy0ncg3Mx6+GTqDQQbAiAmpBhHyJFxxBTVprCAe6fJG+CDCzBMNAxItXL+8aPlIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7359522},"type":"module","gitHead":"580d383796a2de6e230edfacd79a75361fb4ce56","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.26_1779799460898_0.8461887638631471","host":"s3://npm-registry-packages-npm-production"}},"2026.5.27":{"name":"fatmux","version":"2026.5.27","license":"Apache-2.0","_id":"fatmux@2026.5.27","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"4ecbfdd6728450d57552e49f3e3459fc87630484","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.27.tgz","fileCount":276,"integrity":"sha512-dCzMnkCKtYC50gzthes5I+qH9PH2DtXLN0zTc0qlpww81UkboC+LgL3coJD1rpMlXJZOT9Qk0XBI/nbUabA2bA==","signatures":[{"sig":"MEYCIQDpXaIuXpwHEh+oaUMqBCWNUt6JYZX6afTQL4sEulV8LAIhAPa5vuP4dLg4nezEqsjV+OtKPmLwh1Dqk8bbJvNwCLkp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7363418},"type":"module","gitHead":"9ba9244822e300b4edae1e044dff9e9f47613a59","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.27_1779951085488_0.6933901113760454","host":"s3://npm-registry-packages-npm-production"}},"2026.5.29":{"name":"fatmux","version":"2026.5.29","license":"Apache-2.0","_id":"fatmux@2026.5.29","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"abf2b32c81da01d5cdeb26f51bfa979e79d32200","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.29.tgz","fileCount":276,"integrity":"sha512-yM+CYTR2lWYYpPIfno3u9jbpwUK7ARIijqmrHTn6UC7omjkU/TXM3C5g1D/cAgWFKHDch3v+1+hnCEb3zIlrqQ==","signatures":[{"sig":"MEUCIHO3i3qrkev/miLUTHHCj2rDxRP8/31dNoXP/i6+s/86AiEAtucVE8v7wV70qvipudxm0lXN6sfpqINLiXTvM0iXy4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7384155},"type":"module","gitHead":"d3f56b27457e16024fc853f5d22352aca7dbff90","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.29_1780048603142_0.8310558024265495","host":"s3://npm-registry-packages-npm-production"}},"2026.5.29-1":{"name":"fatmux","version":"2026.5.29-1","license":"Apache-2.0","_id":"fatmux@2026.5.29-1","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"717fd2f1ce67ca93bac5ea712f8001f30aec6c77","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.29-1.tgz","fileCount":276,"integrity":"sha512-Fp15BRB5siCewKuNn5jeiXqwNZO9KvV4RVL2pNy4PwwGYT97DeYecGtzp3Lu1LN03VAPQPFoZPNqcm1BGP8oEw==","signatures":[{"sig":"MEUCIQDx/vfBl0t4/cAM5s5B8DGctajrNCXMBZWNfHz1boHLFQIgNjKC42+DB1hNrF2WuwsJoHcU5lDX8F3QSuV2AbuSHbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7384231},"type":"module","gitHead":"6133e37b591423ca77f9731bd31d507175763f9b","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.29-1_1780054041612_0.3338674070637324","host":"s3://npm-registry-packages-npm-production"}},"2026.5.29-2":{"name":"fatmux","version":"2026.5.29-2","license":"Apache-2.0","_id":"fatmux@2026.5.29-2","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"523e0927a020e6fde8f8178fde584da87fca608c","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.29-2.tgz","fileCount":276,"integrity":"sha512-Sr/43PL1iXz9JVXx34N2RDJ8uLUCUSeozKaetcauuvwxeaeDEDGhoIq+NHHlbctYn5DATh/IeotvASsykIAsvw==","signatures":[{"sig":"MEQCIFwK0UYr+0txF4Wzx/lIYWYipGaW2PrgHtrdIF/PaZLiAiB0EwBKvrIOlruVwSJZyqB0G+Jd1Ii0MXSjo7GtgHIW+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7384449},"type":"module","gitHead":"86641fd913ed4baecfb60fc40290873c9ccd9a88","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.29-2_1780055486908_0.651298022730131","host":"s3://npm-registry-packages-npm-production"}},"2026.5.29-3":{"name":"fatmux","version":"2026.5.29-3","license":"Apache-2.0","_id":"fatmux@2026.5.29-3","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"2f074b93a18d1cc770dd32d96a74bb4677187591","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.5.29-3.tgz","fileCount":276,"integrity":"sha512-iu7jduarkVn60kl6WZ5BuzYtAXkmHGTuGcCnnVm8gJM0/XFwoHcl4oWtmzUipwbRwSsxn/JnNh0nK/SOECEt2A==","signatures":[{"sig":"MEUCIQD+NsDfPiufet173++0taNQHPxXTPnrtfSNJiI3OUKVKwIgDfvuj1dWr4NPrDFKGsBLZC2pct943g5Sab8Q091qVK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7437960},"type":"module","gitHead":"4e98ece4fe2620ccbf26e688075d72de4c5d1146","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.5.29-3_1780227474487_0.41948197866105374","host":"s3://npm-registry-packages-npm-production"}},"2026.6.17":{"name":"fatmux","version":"2026.6.17","license":"Apache-2.0","_id":"fatmux@2026.6.17","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"46d3804e027106dc5c27e3cd3359aef954ae8045","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.6.17.tgz","fileCount":284,"integrity":"sha512-f9G3lhZSMz62rNT7Fin2sBsTV3AHF6AIU2kvEixOzeaRSWU+qGE3PQPeoGejiWSNEq/OObY+dqgbxWS4nrw5mg==","signatures":[{"sig":"MEYCIQCFB8I6UqGOoBKa9trRkPBclb4cRV9hSrbQi2nhwaqxRAIhALbchK0v2kvGY4NLxxU7eky8TGGm1x0jjv21R39UgVy9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7480869},"type":"module","gitHead":"dd704525dc0d3b256a4f4e780c35bf06566dfc51","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.6.17_1781703313308_0.4773122700995449","host":"s3://npm-registry-packages-npm-production"}},"2026.6.18":{"name":"fatmux","version":"2026.6.18","license":"Apache-2.0","_id":"fatmux@2026.6.18","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"5bcb1f95de3f3facdeb08ab0368d1d3199441a80","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.6.18.tgz","fileCount":284,"integrity":"sha512-0JsLdE/UKobmQF9PFvpV4dEz/IFXgkCcqjiHcRYle8uQnisGXylxc6mNHCPKQ16Urxz3dwbn2JhHZ0OjTrpc0Q==","signatures":[{"sig":"MEQCIF1LUfn4CLvDwY2fBRH0SJyXcnijgd+LcL8UtcsLXCWfAiBTNv1zqAGSG1ICMhvMCGkGgBuluUck6nrT+FwfIxjYHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7481542},"type":"module","gitHead":"2ded19912ca2fabca8b2100052333c6ffbf1407f","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.6.18_1781770720643_0.5851919407115327","host":"s3://npm-registry-packages-npm-production"}},"2026.6.19-1":{"name":"fatmux","version":"2026.6.19-1","license":"Apache-2.0","_id":"fatmux@2026.6.19-1","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"457a0971ec9b1dd485700beaa5340b32225b1bd6","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.6.19-1.tgz","fileCount":295,"integrity":"sha512-LvIQXW0Cf/+FOsOMg6saKq2I5OCVZHUp2h6PIGOMjQGxIcsbo2R3LEw0Z34/FM3AVIT5zEGKOyALLnzJWQO+dg==","signatures":[{"sig":"MEYCIQCD1F6jDcuttsvsJ8cMDCaDwyTCqX3+mmK9PuEyvYetrwIhAKZmIJbr7r2ExIGLBR6PrOTDPc+r0Ce/rYTAMLs4SGlu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9243823},"type":"module","gitHead":"ca08a979da1e200be0fc09bf146ac68b9e728c72","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.6.19-1_1781896953797_0.11845682821283421","host":"s3://npm-registry-packages-npm-production"}},"2026.6.19-2":{"name":"fatmux","version":"2026.6.19-2","license":"Apache-2.0","_id":"fatmux@2026.6.19-2","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"homepage":"https://github.com/dinweldik/fatmux#readme","bugs":{"url":"https://github.com/dinweldik/fatmux/issues"},"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"f3d4f73c64604fbbf0df8db6b937b0c01485fee4","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.6.19-2.tgz","fileCount":295,"integrity":"sha512-Ax4XZDBvCqCt/h4uPEHyMrFtt/KUzor+1+GfFYvBE/YcaDcK+gp3IRgfOPLOcK54W62+qeQoa0t5XcWfzOndgw==","signatures":[{"sig":"MEUCIQDDDHzUP0jb4MjP+dPl63oPtzwJLIC2YjxcgqRS3RWXkAIgOQaDdvJQpeTiIRwDlwKKCILzuUImXiBpDK7VE2VOpWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9244821},"type":"module","gitHead":"cbe6ac45a7a6b482d6d9dc85be21f05516d5cad9","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"repository":{"url":"git+https://github.com/dinweldik/fatmux.git","type":"git"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","marked":"^18.0.5","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","highlight.js":"^11.11.1","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","marked-highlight":"^2.2.4","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.6.19-2_1781903205458_0.011678597236886468","host":"s3://npm-registry-packages-npm-production"}},"2026.6.24":{"name":"fatmux","version":"2026.6.24","license":"Apache-2.0","_id":"fatmux@2026.6.24","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"homepage":"https://github.com/dinweldik/fatmux#readme","bugs":{"url":"https://github.com/dinweldik/fatmux/issues"},"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"6686d6ca577dec60440d1084cb78485e8d851136","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.6.24.tgz","fileCount":295,"integrity":"sha512-IZAo3xlOzk7L3OR9DgdHP22pQrpwTsWgpDDYD1yQvnk5F9giBLGIUGD9L1w0jmnOSFFDaG7J7etnUANhDe0/6A==","signatures":[{"sig":"MEQCICQZkJNTuNvj/vBDTYjrDQIhVPe4v3KT52sX4GfIl7g9AiA9C3nWW5Nx8OCCQAqWch0Yb/stiWbrqkAtF2b/1C80/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9267219},"type":"module","gitHead":"dcd41aa91c1089d54581646b60a6744c28bba93e","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"repository":{"url":"git+https://github.com/dinweldik/fatmux.git","type":"git"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","marked":"^18.0.5","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","highlight.js":"^11.11.1","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","marked-highlight":"^2.2.4","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.6.24_1782295147041_0.6629881935289981","host":"s3://npm-registry-packages-npm-production"}},"2026.6.24-1":{"name":"fatmux","version":"2026.6.24-1","license":"Apache-2.0","_id":"fatmux@2026.6.24-1","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"homepage":"https://github.com/dinweldik/fatmux#readme","bugs":{"url":"https://github.com/dinweldik/fatmux/issues"},"bin":{"fatmux":"fatmux.js"},"dist":{"shasum":"c11dabbef1b121b2dc1fd1dfc36e153c924efc96","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.6.24-1.tgz","fileCount":295,"integrity":"sha512-Hy1w1mTzeX/1H6ShB4ZHnsqd4dr51LaMKJRZeUOrAU8pF2rkbRjJG4EzT1MnKDgfhx5Hca0UE/zpuBoZfmJ5FA==","signatures":[{"sig":"MEUCIFZIp2FwajKVlX5RwwBeGaUfeDmeGS8qc0mw+7c8GqxjAiEAqfqW/QuuwLiqtb8b04hnGxFoXEN98RSKATfLDXTY5fs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9267353},"type":"module","gitHead":"dcd41aa91c1089d54581646b60a6744c28bba93e","private":false,"scripts":{"dev":"bash scripts/dev.sh","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","start":"node app/server/dist/index.js","prepack":"npm run build","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest","test:e2e":"playwright test","preversion":"npm run check && npm run build","verify:pack":"node scripts/verify-pack.mjs","release:version":"node scripts/release-version.mjs"},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"repository":{"url":"git+https://github.com/dinweldik/fatmux.git","type":"git"},"workspaces":["app/*"],"_npmVersion":"11.12.1","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.20.0","zod":"^4.1.13","marked":"^18.0.5","nanoid":"^5.1.9","svelte":"^5.55.2","node-pty":"^1.1.0","smol-toml":"^1.6.1","@xterm/xterm":"^6.0.0","highlight.js":"^11.11.1","@sveltejs/kit":"^2.57.0","better-sqlite3":"^12.5.0","@xterm/addon-fit":"^0.11.0","marked-highlight":"^2.2.4","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","esbuild":"^0.28.0","@types/ws":"^8.18.1","typescript":"^6.0.2","@types/node":"^24.10.1","@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/fatmux_2026.6.24-1_1782296343995_0.099753097981232","host":"s3://npm-registry-packages-npm-production"}},"2026.6.24-2":{"name":"fatmux","version":"2026.6.24-2","private":false,"license":"Apache-2.0","type":"module","repository":{"type":"git","url":"git+https://github.com/dinweldik/fatmux.git"},"homepage":"https://github.com/dinweldik/fatmux#readme","bugs":{"url":"https://github.com/dinweldik/fatmux/issues"},"bin":{"fatmux":"fatmux.js"},"workspaces":["app/*"],"scripts":{"dev":"bash scripts/dev.sh","build":"npm run build -w @fatmux/shared && npm run build -w @fatmux/web && npm run build -w @fatmux/server","prepack":"npm run build","start":"node app/server/dist/index.js","check":"npm run check -w @fatmux/shared && npm run check -w @fatmux/server && npm run check -w @fatmux/web","test":"npm run test -w @fatmux/shared && npm run test -w @fatmux/server","test:e2e":"playwright test","preversion":"npm run check && npm run build","release:version":"node scripts/release-version.mjs","verify:pack":"node scripts/verify-pack.mjs","release":"npm run release:version && npm run build && npm run verify:pack && npm publish --tag latest"},"devDependencies":{"@playwright/test":"^1.59.1","@types/better-sqlite3":"^7.6.13","@types/node":"^24.10.1","@types/ws":"^8.18.1","esbuild":"^0.28.0","typescript":"^6.0.2","vitest":"^4.0.15"},"dependencies":{"@sveltejs/kit":"^2.57.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","better-sqlite3":"^12.5.0","highlight.js":"^11.11.1","marked":"^18.0.5","marked-highlight":"^2.2.4","nanoid":"^5.1.9","node-pty":"^1.1.0","smol-toml":"^1.6.1","svelte":"^5.55.2","ws":"^8.20.0","zod":"^4.1.13"},"gitHead":"ee3f4071b771e108a059ed6533a405eeabf8be06","_id":"fatmux@2026.6.24-2","description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-ehjAeqOqzLHcNBn2LoiyR3/G0ili5e90KSsu4TlkscX472NCBQnDRc75RHzM0Y3BNhIyzUJTareaQiepOZbJVA==","shasum":"9195a29663cf643326fedb127bffe96dd2f4d4bf","tarball":"https://registry.npmjs.org/fatmux/-/fatmux-2026.6.24-2.tgz","fileCount":294,"unpackedSize":9287746,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDza+pnUd4pPv2gFaJ+iED8zzEL+afPmQqsl6H5ememLQIgJwxcQqNImMDRbN3V0a+5C1rNymMT3TmZAk94T3tnufI="}]},"_npmUser":{"name":"dinweldik","email":"wael@dinweldik.com"},"directories":{},"maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fatmux_2026.6.24-2_1782374406498_0.4257015609605257"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T09:58:57.431Z","modified":"2026-06-25T08:00:06.837Z","2026.4.30-1":"2026-04-30T09:58:57.757Z","2026.4.30-2":"2026-04-30T10:07:33.656Z","2026.4.30":"2026-04-30T10:48:54.271Z","2026.4.30-4":"2026-04-30T10:54:15.700Z","2026.4.30-5":"2026-04-30T11:30:58.138Z","2026.4.30-6":"2026-04-30T11:40:23.185Z","2026.4.30-7":"2026-04-30T11:48:29.391Z","2026.4.30-8":"2026-04-30T11:59:27.983Z","2026.4.30-9":"2026-04-30T12:08:16.773Z","2026.4.30-10":"2026-04-30T12:24:37.508Z","2026.4.30-11":"2026-04-30T12:36:48.142Z","2026.4.30-12":"2026-04-30T12:48:52.541Z","2026.4.30-13":"2026-04-30T13:00:43.221Z","2026.5.4":"2026-05-04T10:33:43.633Z","2026.5.4-1":"2026-05-04T14:02:13.980Z","2026.5.4-2":"2026-05-04T14:41:23.868Z","2026.5.13":"2026-05-13T20:38:22.868Z","2026.5.13-1":"2026-05-13T21:03:43.464Z","2026.5.20":"2026-05-20T14:07:50.545Z","2026.5.26":"2026-05-26T12:44:21.100Z","2026.5.27":"2026-05-28T06:51:25.705Z","2026.5.29":"2026-05-29T09:56:43.398Z","2026.5.29-1":"2026-05-29T11:27:21.879Z","2026.5.29-2":"2026-05-29T11:51:27.122Z","2026.5.29-3":"2026-05-31T11:37:54.735Z","2026.6.17":"2026-06-17T13:35:13.555Z","2026.6.18":"2026-06-18T08:18:40.939Z","2026.6.19-1":"2026-06-19T19:22:34.045Z","2026.6.19-2":"2026-06-19T21:06:45.720Z","2026.6.24":"2026-06-24T09:59:07.313Z","2026.6.24-1":"2026-06-24T10:19:04.250Z","2026.6.24-2":"2026-06-25T08:00:06.720Z"},"bugs":{"url":"https://github.com/dinweldik/fatmux/issues"},"license":"Apache-2.0","homepage":"https://github.com/dinweldik/fatmux#readme","repository":{"type":"git","url":"git+https://github.com/dinweldik/fatmux.git"},"description":"<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />","maintainers":[{"name":"dinweldik","email":"wael@dinweldik.com"}],"readme":"# fatmux\n\n<img src=\"./app/web/static/logo_nobg_fm.svg\" alt=\"fatmux logo\" width=\"160\" />\n\nBrowser-first local workspace for project terminals, source control, and Claude/Codex chat sessions.\n\n## For Users\n\nfatmux is a local web app for working inside a project folder without leaving the browser. It gives you:\n\n- Per-project terminals backed by `node-pty`\n- Git tools for status, diffs, staging, commits, branches, fetch, pull, and push\n- Claude Code and Codex CLI chat sessions wired into the workspace\n- A local SQLite-backed data store for projects, terminals, agent sessions, messages, and raw events\n\n### Install And Run\n\nThe published package exposes a `fatmux` CLI.\n\n```sh\nnpx fatmux\n```\n\nBy default, fatmux binds to `0.0.0.0` and stores its data in `~/.fatmux`.\n\nIf port `4173` is already in use, fatmux will automatically try the next available port and print the selected URL in the startup logs.\n\nIf you want to control the data directory explicitly:\n\n```sh\nFATMUX_HOME=\"$HOME/.fatmux\" npx fatmux\n```\n\nIf you want to override the bind host through the environment, use `FATMUX_HOST`:\n\n```sh\nFATMUX_HOST=127.0.0.1 npx fatmux\n```\n\n### Running In LXC, Docker, VMs, Or Remote Hosts\n\nfatmux binds to all interfaces by default. It will log the final URL, the selected port, and whether it had to move away from the requested port because another process was already listening there.\n\nIf you want to restrict it to local-only access, start it explicitly on loopback:\n\n```sh\nnpx fatmux --host 127.0.0.1\n```\n\n### What You Need\n\n- Node.js that satisfies the repo `engine-strict` setting\n- `npm`\n- Optional: `claude` and `codex` CLIs if you want agent chat integration\n\nCheck the agent CLIs if you plan to use them:\n\n```sh\nclaude --version\ncodex --version\n```\n\n### Accessing fatmux Over Tailscale\n\nIf you want remote access, you can either use the default `0.0.0.0` bind or expose the local port through Tailscale.\n\n#### Option 1: `tailscale serve`\n\n```sh\nnpx fatmux\ntailscale serve --bg 4173\n```\n\n#### Option 2: Direct Tailnet Access\n\nUse Tailscale SSH, port forwarding, or another trusted tailnet path to reach the local port.\n\n### Connect Multiple Instances\n\nAn always-on fatmux instance can serve one PWA for projects running on other tailnet machines. Each machine keeps its own database, files, terminals, git processes, and agents; the coordinator only routes control and caches project summaries for offline labels.\n\n1. Run the LXC instance as the coordinator:\n\n```sh\nFATMUX_COORDINATOR=1 npx fatmux --host 127.0.0.1 --port 4173\ntailscale serve --bg 4173\n```\n\n2. Run fatmux on the laptop and expose it only through Tailscale Serve:\n\n```sh\nnpx fatmux --host 127.0.0.1 --port 4173\ntailscale serve --bg 4173\n```\n\n3. Open the coordinator PWA, go to **Settings → Instance**, and connect the laptop's `https://...ts.net` URL.\n\nThe tailnet policy must allow your devices to reach the coordinator on HTTPS and the coordinator device to reach each connected instance on HTTPS. Connected instances do not need to be reachable directly from the browser. Keep every instance on a compatible fatmux protocol version.\n\nFor the systemd service, add a coordinator override on the LXC:\n\n```sh\nsystemctl --user edit fatmux\n```\n\n```ini\n[Service]\nEnvironment=FATMUX_COORDINATOR=1\n```\n\nThis first version assumes one trusted operator. It does not replicate sessions or files, queue actions for offline machines, or provide application-level roles.\n\n### Run Persistently And Update From The PWA\n\nOn Debian, run fatmux as a user service so it survives logout and can restart into a newly published version. This is a one-time setup.\n\n**Quick install** (auto-detects node/npx, including nvm/fnm, and writes the unit):\n\n```sh\n# connected instance:\ncurl -fsSL https://raw.githubusercontent.com/dinweldik/fatmux/main/scripts/install.sh | bash\n# coordinator:\ncurl -fsSL https://raw.githubusercontent.com/dinweldik/fatmux/main/scripts/install.sh | bash -s -- --coordinator\n```\n\nThe script installs the service, then prints the `tailscale serve` command to run (it needs root, so the script does not run it for you). Re-run any time to update the unit; `--uninstall` removes it. Control with `systemctl --user {start,stop,restart,status} fatmux` and `journalctl --user -u fatmux -f`.\n\nThe manual equivalent:\n\n1. Check the absolute npm runner path with `command -v npx`. If it is not `/usr/bin/npx`, update `ExecStart` in [`docs/fatmux.service`](./docs/fatmux.service).\n2. Install and start the unit:\n\n```sh\nmkdir -p ~/.config/systemd/user\ncp docs/fatmux.service ~/.config/systemd/user/fatmux.service\nsystemctl --user daemon-reload\nsystemctl --user enable --now fatmux\nsudo loginctl enable-linger \"$USER\"\n```\n\n3. Keep the service bound to loopback and expose it through Tailscale:\n\n```sh\ntailscale serve --bg 4173\n```\n\nThe Settings page will then detect npm releases and offer an **Install** button. The server exits cleanly after accepting an update; systemd restarts `npx --yes --prefer-online fatmux@latest`. Updates are refused while an agent is running or queued.\n\nUseful diagnostics:\n\n```sh\nsystemctl --user status fatmux\njournalctl --user -u fatmux -n 100\n```\n\n## Repository Layout\n\n```text\napp/web      SvelteKit frontend\napp/server   Node HTTP/WebSocket runtime\napp/shared   Shared TypeScript types and schemas\nscripts      Local dev and release scripts\n```\n\n## Development\n\n### Install\n\n```sh\nnpm install\n```\n\n### Run Locally\n\n```sh\nnpm run dev\n```\n\n`npm run dev` starts the local workspace manager defined in [`scripts/dev.sh`](./scripts/dev.sh), with:\n\n- shared type-checking in `app/shared`\n- the server in `app/server`\n- the web UI in `app/web`\n\n### Build\n\n```sh\nnpm run build\n```\n\n### Check\n\n```sh\nnpm run check\n```\n\n### Test\n\n```sh\nnpm test\n```\n\n### End-to-End Tests\n\n```sh\nnpm run test:e2e\n```\n\n## Release Workflow\n\nfatmux uses date-based CalVer with a hotfix suffix:\n\n```text\nYYYY.M.D-N\n```\n\nExamples:\n\n- `2026.4.30`\n- `2026.4.30-1`\n- `2026.4.30-2`\n- `2026.5.1`\n\nRelease numbering rules:\n\n- The base version is the current date in local time\n- If a version for today already exists, the suffix increments\n- On a new day, numbering resets to the new date without a suffix\n\n### Release Command\n\nThe release flow is implemented as an npm script:\n\n```sh\nNPM_TOKEN=your_token npm run release\n```\n\nThat script does the following:\n\n1. Runs `npm run release:version`\n2. Computes the next date-based version from the repo’s package manifests\n3. Runs `npm publish --tag latest`\n\n### Authentication For Publishing\n\nPublishing uses the npm token from the environment:\n\n```ini\n//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n```\n\nSet `NPM_TOKEN` in your shell before running the release command.\n\n### Notes On Publish Artifacts\n\n- The root package is the published CLI package\n- The workspaces are part of the repo and are not separately published by the default release command\n- `fatmux.js` is the CLI entrypoint\n\n## Package Structure\n\n- [`package.json`](./package.json) defines the CLI package, workspace orchestration, and release scripts\n- [`app/server/package.json`](./app/server/package.json) contains the server workspace\n- [`app/shared/package.json`](./app/shared/package.json) contains shared types and schemas\n- [`app/web/package.json`](./app/web/package.json) contains the browser UI\n\n## Working On The Project\n\n### Common Local Commands\n\n```sh\nnpm run dev\nnpm run check\nnpm test\nnpm run build\n```\n\n### Release Checklist\n\n- Confirm `NPM_TOKEN` is set\n- Run `npm run release`\n- Verify the published version\n- Commit and push the manifest changes if you want the release bump recorded in git\n\n### Versioning Files\n\nThe release script updates these manifests:\n\n- [`package.json`](./package.json)\n- [`app/shared/package.json`](./app/shared/package.json)\n- [`app/server/package.json`](./app/server/package.json)\n- [`app/web/package.json`](./app/web/package.json)\n\n## Implementation Notes\n\n- The app stores persistent state in SQLite under `~/.fatmux`\n- The web UI is SvelteKit-based\n- The server is a Node runtime with HTTP and WebSocket endpoints\n- Agent support uses locally installed CLI tools rather than vendor API keys stored in fatmux\n\n## Troubleshooting\n\n- If `npm publish` refuses the version, check whether the version has a prerelease suffix and whether the `--tag` flag is set\n- If agents are missing, verify `claude` and `codex` are available on `PATH`\n- If the app does not start, confirm your Node version satisfies the root `engine-strict` setting\n","readmeFilename":"README.md"}