Back to home@musclePatrickStar

fdtree

No description

Stars
1
Language
JavaScript
Created
Aug 27, 2026
Updated
Aug 27, 2026
GitHub repo

Introduction

DSH文件目录+diff插件

如果你和我一样不想为了一个目录树就安装大而全的 UI,这个插件或许可以帮到你

简述

在界面最右侧显示工作区文件目录树,点开文件后以真嵌入布局(四列占位:原生侧边栏|对话区|文件内容|文件树)展示内容与实时红绿 Diff(git 模式对比 HEAD,无 git 时对比会话基线,会话基线支持自定义),文件 Diff 支持 22 种语言的语法高亮。

功能

  • 布局:始终占列的四列形态(原生侧边栏|对话区|文件内容|文件树),非浮动;内容列默认收起,仅显示文件树
  • 文件树:点文件展开内容区,多标签打开,内容/Diff 整合为单一视图:🟥 删除行、🟩 新增行、行号、+N −N 统计
  • 模式自动切换:工作区位于 git 仓库内(含父目录仓库)自动启用 git 模式;非仓库目录自动用基线模式;git init 后 15 秒内自动检测生效
  • git 模式:与 HEAD 对比(git 原生 xdiff),目录树徽标实时显示改动/未跟踪/删除;git commit 后差异自动归零
  • 基线模式(无 git 仓库):与打开时快照对比,支持「📌 设基线」
  • 打开终端:右键目录树节点弹出菜单,可在宿主系统打开终端(Windows:Windows Terminal / PowerShell / cmd;macOS:Terminal.app;Linux:桌面终端),支持一键 cd 到选中目录
  • 语法高亮:JS/TS、Python、JSON、Markdown、HTML、CSS、YAML、Shell、C/C++/C#/Java、Go、Rust、PHP、Ruby、Swift、Kotlin、SQL、PowerShell、Lua、Dockerfile、Makefile、.env
  • 大文件优化:FsVersion 变更检测免重复读盘、大文件自动降载渲染

安装

方式一:dsh plugin 命令安装

# 在目标机器的 DSH web profile 中安装(自动 pnpm 安装 + 注册)
dsh plugin --profile web add "https://github.com/musclePatrickStar/fdtree.git"

# 或 SSH 方式(注意:必须用 git+ssh:// 完整格式,pnpm 不支持 git@github.com:xxx 简写)
dsh plugin --profile web add "git+ssh://git@github.com/musclePatrickStar/fdtree.git"

# 或本地路径
dsh plugin --profile web add "file:/path/to/fdtree"

如果是 fork 或自建镜像,把上面的仓库地址替换成你自己的即可。

方式二:手动编辑

  1. $DSH_HOME/profiles/web/package.jsondependencies 加一行:"fdtree": "github:musclePatrickStar/fdtree"(可锁定版本:"fdtree": "github:musclePatrickStar/fdtree#v0.1.0");
  2. dsh.profile.bundles 数组末尾追加 "fdtree"
  3. $DSH_HOME/profiles/web 下执行 pnpm install
  4. 重启 dsh web(dsh web)。左侧栏底部出现「文件树」按钮,右侧自动显示文件树面板。

插件包结构遵循 DSH 插件规范:package.jsondsh.bundle.patch + dsh.clientcordis.patch.yml 补丁插入、lib/index.js 宿主端、client/client.js 客户端 bundle(__ModuleLoader__ 格式)。

卸载

dsh plugin --profile web remove fdtree

开发说明

  • 宿主端:lib/index.js(ESM,Cordis 插件,经 webServer 注册 /fdtree/rpc HTTP JSON-RPC)
  • 客户端:client/client.js(手写 __ModuleLoader__ bundle,同源 fetch 调用宿主 RPC)
  • 仓库根目录即插件包根目录:lib/index.js 宿主端、client/client.js 客户端 bundle、cordis.patch.yml 补丁、package.json 包定义(不含演示文件)。

安全说明

  • 无外部网络请求:客户端只通过同源 fetch('/fdtree/rpc') 与本机 DSH web 服务器通信,不连接任何外部域名;无遥测、无上报。
  • 只读工作区:插件只读取当前会话工作区内的文件(带路径越界检查),git 命令(status/diff/branch)仅在本地运行并受 DSH 沙箱策略约束,从不执行 fetch/pull/push
  • 会话隔离:未绑定会话前,所有 RPC 一律拒绝(NO_SESSION),不会暴露任何路径或文件内容。
  • 终端功能:仅在用户显式右键点击时触发,目标目录被限制在工作区内。
  • 数据本地化:所有内容都在你自己的浏览器中渲染展示,不会发送到任何服务器。
  • 安装即信任:与所有包管理器一样,安装插件等同于执行插件作者代码。请仅从可信来源安装。

License

MIT