{"_id":"@dsh-xhl/dsh-git-gui","_rev":"7-f91756f01004a5e2dea6184916e513c1","name":"@dsh-xhl/dsh-git-gui","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.3":{"name":"@dsh-xhl/dsh-git-gui","version":"0.1.3","license":"MIT","_id":"@dsh-xhl/dsh-git-gui@0.1.3","maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-sidebar"],"platform":"web"}},"dist":{"shasum":"eb68cf0711b03f5695017529f4fedea87ef25fa4","tarball":"https://registry.npmjs.org/@dsh-xhl/dsh-git-gui/-/dsh-git-gui-0.1.3.tgz","fileCount":12,"integrity":"sha512-1wirZnziEDKFaVGfWAMcZq67KQV696SR6L/ZuxhuKm6QJ2UAB6Sud0eOSx3wp2cHO/4aUKUO1NCICGH30wmSdw==","signatures":[{"sig":"MEQCIHebOIfXZGn2ozkMv+lUZkrmHZVKTntBGM2UehoJ6E85AiAQROLwMIpk5+qUzeE7sbnb1BzwpuGnz8Bb0MhncpT5qA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174069},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"302edf176db8d946530858296a01a4c53f30b90f","scripts":{"test":"node --test","prepack":"node scripts/build-client.mjs","build:client":"node scripts/build-client.mjs","watch:client":"node scripts/build-client.mjs --watch"},"_npmUser":{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"},"repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"_npmVersion":"11.19.0","description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-git-gui_0.1.3_1788427513514_0.9933829838803059","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@dsh-xhl/dsh-git-gui","version":"0.1.4","license":"MIT","_id":"@dsh-xhl/dsh-git-gui@0.1.4","maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"b3b6e686a762eaaacdaf813791c42dd1cb112c79","tarball":"https://registry.npmjs.org/@dsh-xhl/dsh-git-gui/-/dsh-git-gui-0.1.4.tgz","fileCount":12,"integrity":"sha512-aaZV2t3oPBdTRmUbJKkkaXR54mS9w9jQHQ1QyWlnQiabq9UUVaTOuMRk55GhYtKXRWrk5omZaL8vHmkZyHyk8w==","signatures":[{"sig":"MEYCIQDpRzNDU47BqwQn3eXug+mBbNO+5ExIzyHwX2aesaN7tgIhAIwZB00oJeWPBNx4MklEDBfvxuaCSmGursSU0I1uL8uG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175499},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"302edf176db8d946530858296a01a4c53f30b90f","scripts":{"test":"node --test","prepack":"node scripts/build-client.mjs","build:client":"node scripts/build-client.mjs","watch:client":"node scripts/build-client.mjs --watch"},"_npmUser":{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"},"repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"_npmVersion":"11.19.0","description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-git-gui_0.1.4_1788945345829_0.8824586606362845","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@dsh-xhl/dsh-git-gui","version":"0.1.5","license":"MIT","_id":"@dsh-xhl/dsh-git-gui@0.1.5","maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"c298fc0b8bf2422ab1eb68aa9b321ce148ecbf7e","tarball":"https://registry.npmjs.org/@dsh-xhl/dsh-git-gui/-/dsh-git-gui-0.1.5.tgz","fileCount":12,"integrity":"sha512-Wg7VmpkBw/rgukiFLa0bDp/VPxHTJ/CeK2GSSF5M3vIkaEWnyAiVj+GFtUi0TvgynclLBa4YLwn0gYx35aahZw==","signatures":[{"sig":"MEUCIBMw7+lLkTiJE1VxKfToH9Ur77RFatNhpy6wigMYDrBkAiEAue40jcUhM+DKzfplzmH/LlELRQSN8GEdkpRN0EUuwsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179206},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"a895a2108b13643fb10eb4854b530a3f6bca2735","scripts":{"test":"node --test","prepack":"node scripts/build-client.mjs","build:client":"node scripts/build-client.mjs","watch:client":"node scripts/build-client.mjs --watch"},"_npmUser":{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"},"repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"_npmVersion":"11.19.0","description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-git-gui_0.1.5_1788947648554_0.3586681821406641","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@dsh-xhl/dsh-git-gui","version":"0.1.6","license":"MIT","_id":"@dsh-xhl/dsh-git-gui@0.1.6","maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"5ecb87ad938ec7adad1f6e3ce688102d70bc870a","tarball":"https://registry.npmjs.org/@dsh-xhl/dsh-git-gui/-/dsh-git-gui-0.1.6.tgz","fileCount":12,"integrity":"sha512-IRt7UUNMl9qxUxCxxutSDqIGBaxEGSu270UmBiwgbkLwDpeRDgC55IsMGcsgyjsYyuHSAEMybQfh+k5XQ8nWRw==","signatures":[{"sig":"MEQCIG1G5BtKZH8vJm22DWZC+Z5nack3OpMCN0/MjQShdqwMAiBdqK7aul4pUInqsNPzSFrRY7qyUguG3qtTG/mqVZ3XiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179933},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"415d1ca7ac098bf13d269667198afa9f6d6d51de","scripts":{"test":"node --test","prepack":"node scripts/build-client.mjs","build:client":"node scripts/build-client.mjs","watch:client":"node scripts/build-client.mjs --watch"},"_npmUser":{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"},"repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"_npmVersion":"11.19.0","description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-git-gui_0.1.6_1788948090453_0.5133129164934278","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@dsh-xhl/dsh-git-gui","version":"0.1.7","license":"MIT","_id":"@dsh-xhl/dsh-git-gui@0.1.7","maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"970f3695d42904e84151003df85304a499341f7d","tarball":"https://registry.npmjs.org/@dsh-xhl/dsh-git-gui/-/dsh-git-gui-0.1.7.tgz","fileCount":12,"integrity":"sha512-MeRUMZw01rv1RV1axuHezWYZodADwTFpN3QaG4gI/C/DxRsyoX4Pv3F7upngMOsqdFyDaxQhmFLpkYxtwzT5+Q==","signatures":[{"sig":"MEQCIEYIqbOuMjiwmY0ztcBjx5b3N+oZx3bml5Q/28lYPDP9AiA0q80Byv6j7PBU2wa5adApc6qqpief1QKeTX7dJKpTLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181565},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"ea213d1d695f43d3dd80e521e11fd8fb7a71c27e","scripts":{"test":"node --test","prepack":"node scripts/build-client.mjs","build:client":"node scripts/build-client.mjs","watch:client":"node scripts/build-client.mjs --watch"},"_npmUser":{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"},"repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"_npmVersion":"12.0.2","description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-git-gui_0.1.7_1789143304455_0.8971332463230055","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@dsh-xhl/dsh-git-gui","version":"0.1.9","license":"MIT","_id":"@dsh-xhl/dsh-git-gui@0.1.9","maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"3868c41f9982925b14e3eff689f3f6713d4966a0","tarball":"https://registry.npmjs.org/@dsh-xhl/dsh-git-gui/-/dsh-git-gui-0.1.9.tgz","fileCount":12,"integrity":"sha512-F2JZ0ONBIEAilxawdvirXBlbsv1O3k8iphhrw4I6y0QaR35rh1O4CD/8SVIWmHt95rJF0BwJ/Gfh4zjMXgsp1Q==","signatures":[{"sig":"MEYCIQCYs32L+k1V4dugdRpYF4KuX6Xq0qF/OIEVb9upfQSodQIhAOm32AnhZI6Gxy0aFl1beuqPD8HpMX8ejykc83tcB5d8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDRCrCSpD69cTAB8irDcJ67LzO4ktYaJAsya3TtP4dcxwIgYt0a0iZZ8fGyPT/Qr905UP3dqLwmwFC8xTjQl4ZjjJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192911},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3a52b4c0602b36fe4f63d6166d7a1022ffbbc658","scripts":{"test":"node --test","prepack":"node scripts/build-client.mjs","build:client":"node scripts/build-client.mjs","watch:client":"node scripts/build-client.mjs --watch"},"_npmUser":{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"},"repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"_npmVersion":"12.0.2","description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-git-gui_0.1.9_1789802582710_0.6876721814592626","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@dsh-xhl/dsh-git-gui@0.2.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"dist":{"shasum":"6eea160e5000fb121cd15adc33bf378fd6f143c5","tarball":"https://registry.npmjs.org/@dsh-xhl/dsh-git-gui/-/dsh-git-gui-0.2.0.tgz","fileCount":12,"integrity":"sha512-ElTxO5oYo1Cbf+RxIOj7fUz6RVOah+DAecENMDPrcQBXYFwQkYN1X3sXYaWZJT7S2qaTpZCHvIQ0wXTKAwbdBQ==","signatures":[{"sig":"MEUCIQDZ0sQtS7e5r4XE5VOgH2mRuwsTruhHYMBuOGl2oYGlSwIgEj6xsT0GApcanDO3SQ0u60JxuyNgR6Dj7CYYI3xChmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHwempB89IhSOdhY6BiMAr71093cXx8khNfIFu6uanfBAiBYp+S1vsJGsdgyk82Vg0EmIp6ngWjOdUoPuId12+gIBQ=="}],"unpackedSize":187780},"main":"lib/index.js","name":"@dsh-xhl/dsh-git-gui","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"407d1b7f074f08b6c07fb78b50c5c2ea9fb85733","license":"MIT","scripts":{"test":"node --test","prepack":"node scripts/build-client.mjs","build:client":"node scripts/build-client.mjs","watch:client":"node scripts/build-client.mjs --watch"},"version":"0.2.0","_npmUser":{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"},"homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"_npmVersion":"12.0.2","description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","directories":{},"maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-git-gui_0.2.0_1789809703165_0.18730075089506149"}}},"time":{"created":"2026-09-03T09:25:12.878Z","modified":"2026-09-19T09:21:43.577Z","0.1.3":"2026-09-03T09:25:13.655Z","0.1.4":"2026-09-09T09:15:45.963Z","0.1.5":"2026-09-09T09:54:08.678Z","0.1.6":"2026-09-09T10:01:30.594Z","0.1.7":"2026-09-11T16:15:04.607Z","0.1.9":"2026-09-19T07:23:02.802Z","0.2.0":"2026-09-19T09:21:43.240Z"},"bugs":{"url":"https://github.com/wojiaoxiaomayun/dsh-git-gui/issues"},"license":"MIT","homepage":"https://github.com/wojiaoxiaomayun/dsh-git-gui#readme","repository":{"url":"git+https://github.com/wojiaoxiaomayun/dsh-git-gui.git","type":"git"},"description":"Git GUI panel for the DeepSeek Harness web surface: visualize working-tree changes (including every modification the agent makes), stage/commit/branch/merge/log/pull/push/stash/revert — all from the browser.","maintainers":[{"name":"wojiaoxiaomayun","email":"1146897508@qq.com"}],"readme":"# `dsh-git-gui`\r\n\r\n<p align=\"center\">\r\n  <a href=\"./README.md\">English</a> ·\r\n  <a href=\"./docs/README.zh-CN.md\">简体中文</a>\r\n</p>\r\n\r\n<p align=\"center\">\r\n  <img alt=\"Version 0.1.2\" src=\"https://img.shields.io/badge/version-0.1.2-blue\">\r\n  <img alt=\"DeepSeek Harness rc.6\" src=\"https://img.shields.io/badge/dsh-0.1.0--rc.6-skyblue\">\r\n  <img alt=\"MIT License\" src=\"https://img.shields.io/badge/license-MIT-green\">\r\n</p>\r\n\r\nA **Git graphical interface plugin** for the DeepSeek Harness Web UI: view, stage, commit, and revert project changes directly in the browser, while seeing every modification the Agent (harness) makes to workspace files in real time.\r\n\r\n> **Current version: v0.1.2** — Visual operations for viewing changes, committing/reverting, remote synchronization, and more are now available. Branch management, stash, and the AI modification timeline are planned to be completed and released in v0.2.0. See the [Roadmap](#roadmap) below for details.\r\n\r\n## Features\r\n\r\n- **Changes View**: Changes are grouped into \"Staged / Modified / Untracked / Merge Conflicts\". Click to view line-level diffs, stage/unstage changes with one click, and discard changes or delete untracked files with confirmation dialogs.\r\n- **File Tree View**: Browse all files in the workspace (automatically respecting `.gitignore`). File names are color-coded by status — unmodified files use the default text color (black in light mode / white in dark mode), modified but uncommitted files are **blue**, and untracked files are **red**. Supports directory collapsing and name filtering. Click an unmodified file to preview its contents directly.\r\n- **Log View**: View commit history (hash / reference badges / author / relative time), with support for reverting individual commits using `revert`.\r\n- **Nested Repository Detection**: When the session workspace itself is not a Git repository, the plugin automatically searches subdirectories for a single nested repository and uses it as the operation root (for example, when the repository is located in the `dsh-git-gui/` subdirectory of the workspace). If multiple nested repositories are found, the plugin explicitly prompts the user instead of guessing which one to use.\r\n\r\n## Installation\r\n\r\n### GitHub Source\r\n\r\n```powershell\r\ndsh plugin --profile web add github:wojiaoxiaomayun/dsh-git-gui\r\n```\r\n\r\n### npm Source\r\n\r\n```powershell\r\ndsh plugin --profile web add @dsh-xhl/dsh-git-gui\r\n```\r\n\r\nAfter installation, restart `dsh web` and refresh the browser page.\r\n\r\n## Update\r\n\r\n```powershell\r\ndsh plugin --profile web update @dsh-xhl/dsh-git-gui\r\n```\r\n\r\n## Uninstall\r\n\r\n```powershell\r\ndsh plugin --profile web remove @dsh-xhl/dsh-git-gui\r\n```\r\n\r\n## Troubleshooting\r\n\r\n**The Git panel is stuck on \"Detecting repository…\"?**\r\n\r\nThis is a known issue when the plugin is installed as a `link:` symlink (e.g. `dsh plugin --profile <name> add <local path>`): the host half resolves `@deepseek-ai/*` from the plugin repo's own `node_modules` instead of the DSH runtime's copies, so the `git/*` endpoint registration is invisible to the gateway.\r\n\r\nUse the official install methods instead (a real install automatically links the host's packages):\r\n\r\n```powershell\r\ndsh plugin --profile web add github:wojiaoxiaomayun/dsh-git-gui\r\n# or\r\ndsh plugin --profile web add @dsh-xhl/dsh-git-gui\r\n```\r\n\r\nTo mimic a real install locally, pack a tarball and install that (**do not** add a local directory):\r\n\r\n```powershell\r\nnpm pack\r\ndsh plugin --profile web add .\\dsh-xhl-dsh-git-gui-0.1.3.tgz\r\n```\r\n\r\nIf you do want a `link:` dev loop, run `scripts/link-host-deps.ps1` after every `npm install` / `pnpm install`, then fully restart DSH.\r\n\r\n**The panel is stuck on \"Detecting repository…\" right after upgrading DSH itself?**\r\n\r\nThe host half needs `@deepseek-ai/cordis`, `@deepseek-ai/dsh-llm` and `@deepseek-ai/dsh-typert-protocol`, resolved through the shared module fallback at `$DSH_HOME/profiles/node_modules`. A DSH upgrade can leave stale pnpm links in that directory (symlinks pointing into a deleted `.pnpm` store), so the plugin host half fails to import and the `git/*` endpoints never register — the browser panel then stays on \"正在检测仓库…\" forever.\r\n\r\nVerify from a directory that does **not** shadow the profile (e.g. `%TEMP%`):\r\n\r\n```powershell\r\nnode --input-type=module -e \"await import('file:///' + (process.env.USERPROFILE + '/.dsh/profiles/web/node_modules/@dsh-xhl/dsh-git-gui/lib/service.js').replaceAll('\\\\\\\\', '/')); console.log('host half loads')\"\r\n```\r\n\r\nIf it throws `ERR_MODULE_NOT_FOUND` for one of the `@deepseek-ai/*` packages, heal the broken fallback links (point them at the installed DSH copy, as DSH's own boot repair does):\r\n\r\n```powershell\r\n$shared = \"$env:USERPROFILE\\.dsh\\profiles\\node_modules\\@deepseek-ai\"\r\n$img = \"$env:USERPROFILE\\AppData\\Local\\Volta\\tools\\image\\packages\\@deepseek-ai\\dsh\\node_modules\\@deepseek-ai\\dsh\\node_modules\\@deepseek-ai\"\r\nforeach ($n in 'cordis','dsh-llm','dsh-typert-protocol') {\r\n  Remove-Item \"$shared\\$n\" -Force -ErrorAction SilentlyContinue\r\n  cmd /c \"mklink /J `\"$shared\\$n`\" `\"$img\\$n`\"\"\r\n}\r\n```\r\n\r\nThen fully restart `dsh web` (the running process caches the failed module load) and refresh the browser page. The plugin also hardens the browser half against DSH session-list API changes (`sessions.current` was removed; the active session is now derived from the session-scoped `sessionId` / the `ids` + `retainedBy.mainView` list fields), so a stale or renamed session field no longer leaves the panel stuck either.\r\n\r\n## Where to start\r\n\r\nAfter installing the plugin, open the DeepSeek Harness Web UI and click the Git button (with a changed-files count badge) in the top-right corner of the conversation header to open the floating panel. On the hero / new-chat page (before a conversation exists) the same button shows in the top-right spot through the `hero.flex` slot declared by the [dsh-hero-flex](https://github.com/wojiaoxiaomayun/dsh-hero-flex) plugin — without that plugin installed, the hero shows nothing.\r\n\r\n## Structure\r\n\r\n```text\r\nHost (Node):  GitService (@Remote, namespace `git`, Typert SRC mode → git/* endpoints)\r\n               ├─ runner.js   spawn git (no shell) + per-workspace queue + output limit + error classification\r\n               ├─ parse.js    porcelain v2 / unified diff / log / refs / stash parsing\r\n               └─ activity.js session/event → (session, turn, tool, file) timeline (Stage 2)\r\n\r\nClient (Browser): conversation.session.header.utilities entry button (uncommitted-count badge) + shell.overlay floating panel + hero.flex entry (via dsh-hero-flex)\r\n               ├─ control.js  session cwd synchronization + polling + operation runner + confirmation dialogs\r\n               ├─ v-*.js      view components (React.createElement, no JSX)\r\n               └─ styles.js   theme tokens (--dsw-alias-*) and styles, adaptive to light/dark mode\r\n```\r\n\r\n## Roadmap\r\n\r\n| Stage | Content | Status |\r\n|--------------|---|---|\r\n| v0.1.1 | Changes / file tree / log + commit, stage, discard, revert, **Pull/Push/Fetch + Add Remote**, dark mode, nested repository detection | ✅ Current version |\r\n| v0.2.0 (unreleased) | **Branch management** (local/remote lists, switch/create, merge, ahead/behind) | 🔧 In progress |\r\n| v0.2.0 (unreleased) | **Stash** (push/pop/apply/drop) | 🔧 In progress |\r\n| v0.2.0 (unreleased) | **AI modification timeline** (session × turn × tool → file attribution view) | 🔧 In progress |\r\n| Future ideas | Reset entry point, file history (`git log -- <path>`), settings card (polling interval / Git path / identity fallback), interactive rebase (PTY) | 💡 To be designed |\r\n\r\n## Limitations\r\n\r\n- When panel operations and Agent edits occur concurrently, Git's own state is treated as authoritative. A warning bar is displayed while the session is running, and operations such as discarding changes require confirmation.\r\n- Untracked file content previews are limited to 512 KiB; diff output is limited to 4 MiB (truncation is marked); the file tree supports a maximum of 3,000 files.\r\n- Credentials rely on existing Git credential helpers (WinCred / SSH agent). Interactive password input is disabled (`GIT_TERMINAL_PROMPT=0`) to ensure operations do not hang.\r\n- On Windows, if the repository's `.git` directory was created by a process running with administrator privileges, tools running with normal privileges, such as PyCharm, need to execute `git config --global --add safe.directory '<path>'` (Git 2.35+ hijacking protection).\r\n- The plugin has not yet been tested on macOS or Linux. Please report any issues you encounter.","readmeFilename":"README.md"}