Skip to content

Releases: FIRSTKANG/folder-terminal

1.4.4

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 12 Sep 01:15

Folder Terminal 1.4.4

Bug 修复:复制路径时文件名/目录名停留在「未命名」。

🐛 修复

  • 图标点击时重新解析路径,不再使用注入瞬间固化的旧值
    • 此前 Obsidian 新建文件/目录默认名「未命名」,重命名后文件树的 DOM 节点是就地改名(不重建),图标不会被重新注入,导致点击复制的仍是旧路径「未命名」
  • 路径解析优先级调整:优先使用文件浏览器视图的内部索引 fileItems(新建/重命名/移动后即时同步,权威数据);DOM 上的 data-path 降为兜底(它在重命名后可能仍是旧值)
  • 文件行与文件夹行的所有图标(终端 / 复制路径 / 绝对路径 / 标题 / 内容 / 展示)统一生效

验证

  1. 在 Obsidian 新建一个文件或目录(默认名为「未命名」)
  2. 将其重命名为实际名字(DOM 节点不重建)
  3. 悬停该行点击「复制路径 / 复制绝对路径」等图标
  4. 剪贴板应得到重命名后的真实路径,而非「未命名」

1.4.3

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 10 Sep 22:44

Folder Terminal 1.4.3

Bug 修复:手动创建的目录复制路径时误报「目录不存在」。

🐛 修复

  • 文件夹辅助动作(复制文件路径 / 复制绝对路径 / 系统展示)不再依赖 vault.getAbstractFileByPath 反查抽象文件映射
    • 此前手动新建的目录在文件树 DOM 已渲染、但 vault 映射尚未同步时,反查拿不到对象会误报「目录不存在」
    • 现改为直接使用文件树上已解析出的路径执行,与 vault 索引是否同步无关
  • 清理不再使用的 copy.folderNotFound 词条(中英文)

验证

  • 在 Obsidian 中手动新建一个目录
  • 悬停该目录行,分别点击「复制文件路径 / 复制绝对路径 / 系统展示」三个图标
  • 应正常复制路径 / 呼起文件管理器,不再提示「目录不存在」

1.4.2

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 09 Sep 22:43

Folder Terminal 1.4.2

文件树「复制」图标重构升级:从单一可配置模式改为一组可独立操作的动作图标,并新增「在系统文件管理器中展示」与「图标配色」能力。
文件夹行图标扩展升级:在原有「在此打开终端」图标旁新增一组辅助动作图标,并对系统管理器中展示 / 绝对路径计算做了共享抽取。

✨ 新增

  • 文件行复制图标改为动作组:悬停文档时横向浮现一组图标,各可独立操作
    • 复制标题(heading)
    • 复制 Wiki 文件路径(route,去扩展名相对路径,如 wiki/ideas/xxx)
    • 复制内容(copy,完整 Markdown 源码)
    • 复制 Wiki 绝对路径(link,磁盘绝对路径)
    • 在 Finder / 资源管理器中展示(folder-open,定位并选中该文档;macOS open -R、Windows explorer /select、Linux 打开所在目录)
  • 文件夹行辅助动作图标:悬停文件夹时,在「终端」图标左侧横向浮现一组动作(与文件图标同尺寸、同配色、同 hover 样式)
    • 在 Finder / 资源管理器中展示(folder-open,定位并选中该文件夹)
    • 复制 Wiki 文件路径(route,相对库根的路径,如 wiki/ideas)
    • 复制 Wiki 绝对路径(link,磁盘绝对路径)
  • 库根文件夹特判:绝对路径复制库根本身(无尾部斜杠),展示功能定位库根目录
  • 文件树图标配色:设置面板新增「文件树图标颜色」取色器,可自定义「终端」与「复制」图标组的颜色;右侧重置按钮恢复跟随主题

🔧 重构

  • 抽取共享模块 src/shellUtils.ts:
    • toAbsPath(app, relPath):文件/文件夹绝对路径计算,统一非桌面端适配器的退化逻辑
    • revealInFileManager(absPath, linuxOpenDir):平台命令执行(macOS open -R / Windows explorer /select / Linux xdg-open)
  • folderIcons 与 fileCopyIcons 同步改为调用共享函数,删除各自重复的本地实现(共约 90 行)

🐛 修复

  • tooltip 与 title 重叠:删除按钮上的原生 title,仅保留 aria-label,消除浏览器气泡与 Obsidian 暗色 tooltip 同弹的重叠
  • 悬停目录时点亮所有后代图标:改为行自身直子选择器(.tree-item-self:hover > …),仅显示被悬停的那一行的图标
  • 点击后图标驻留:点击后主动 blur(),释放按钮焦点,避免 :focus-within 让该行图标常驻、与下一行图标同时出现
  • 复制到系统剪贴板(文件本体)不可用:经排查为 Obsidian 渲染沙盒限制(Web Clipboard 拒绝自定义类型、Electron 文件剪贴板对 Finder 不生效),暂时屏蔽该图标,功能实现保留以便后续开放
  • 文件「复制文件路径」改为带后缀的相对路径:此前复制的是去扩展名的相对路径(wiki/ideas/xxx),现在复制原始 file.path(wiki/ideas/xxx.md),可直接用于 cp、终端引用等文件系统操作
  • 图标提示文案同步:「复制 Wiki 文件路径」→「复制文件路径」(中英文词条均已更新),文件夹相对路径无扩展名,语义与文案不受影响

交互

  • 两级 hover:悬停文件行时图标以浅化的设置色浮现(默认混入主题背景色 60%),移到图标本体上提升为完整设置色并轻微加深强调;未设置配色时沿用主题默认图标色

验证

  • 悬停文件/文件夹:仅当前行图标浮现,不点亮其他行
  • 复制标题 / Wiki 路径 / 绝对路径 / 内容:剪贴板内容正确并弹出「已复制」
  • 在 Finder 展示:macOS 弹出 Finder 并选中该文档
  • 图标配色:取色后终端与复制图标同步变色,重置后恢复主题色

1.2.1

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 08 Sep 14:23

Folder Terminal 1.2.1

搜索功能修复:上下箭头现在能够正常导航到多个匹配结果。

🐛 修复

  • 搜索框上下箭头导航失效:修复了搜索日志时,按下箭头每次都跳回第一个匹配结果的问题。
    • 根本原因:runSearch 每次调用都会重复执行 clearDecorations(),导致 SearchAddon 丢失上次匹配位置缓存
    • 修复方案:移除多余的 clearDecorations() 调用,让 SearchAddon 内部维护搜索状态
    • 现在可以通过 ↑ / ↓ 连续浏览所有匹配项,SearchAddon 会自动滚动到激活匹配位置

验证

搜索功能验证通过:

  • 从第一个结果按 ↓ 能顺序跳到后续每一个匹配
  • 到最后一个结果后再按 ↓ 循环回第一个
  • ↑ 反向导航行为对称
  • 匹配高亮和计数更新正常

Folder Terminal 1.2.0

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 07 Sep 14:59

Folder Terminal 1.2.0

Windows 管道模式下的命令历史与行内光标导航,终端手感对齐真实 shell。

✨ 新增

  • 命令历史(↑ / ↓):Windows 管道模式下 cmd.exe 不带 readline,此前方向键序列发过去毫无反应。现在由插件前端维护历史:
    • ↑ 逐条回溯已执行过的命令,↓ 往回走
    • 到达最新一条后再按 ↓,会恢复你按 ↑ 之前正在编辑的那半行内容(草稿不丢)
    • 连续重复的命令只记一次;上限 500 条
  • 行内光标导航:← / → 在已输入内容中左右移动光标;Home / End 跳到行首 / 行尾(同时支持 CSI 与 SS3 两种转义序列)
  • 搜索框支持 ↑ / ↓:搜索浮层输入框内按 ↑ / ↓ 直接跳到上一处 / 下一处匹配,不必再去点箭头按钮

🐛 修复

  • 方向键在 Windows 管道模式下"按了没反应":转义序列原本被透传给 cmd.exe,而后者不处理 readline,现改为前端本地接管。

🧪 验证

scripts/lcalecho-test.mjs 扩充到 13 个仿真用例,覆盖:

  • 行编辑回归(退格 / Delete / Ctrl+U / 回车只发整行)
  • 命令历史:回溯、到顶不越界、↓ 回到底部、草稿恢复、导航不向 shell 发字节
  • 光标移动:← 插入编辑、行首不越界、Home / End、移动后回车整行完整

全部通过。

⚠️ 说明

命令历史为每个终端标签独立维护,且仅存在于当前会话(关闭标签即清空,不做跨会话持久化)。macOS / Linux 使用真实 PTY,历史仍由 shell 自身提供,行为不变。

Folder Terminal 1.1.1

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 07 Sep 14:50

Folder Terminal 1.1.1

Hotfix:修复 1.1.0 中终端内搜索导致的 allowProposedApi 运行时异常。

🐛 修复

  • 搜索高亮报错:xterm.js 的 SearchAddon 使用装饰(Decoration)API,需要在创建 Terminal 时启用 allowProposedApi: true。1.1.1 已补上该开关,搜索浮层现在可正常高亮匹配结果。

🚀 1.1.0 新增能力回顾

  • 终端内搜索:输入框实时搜索、Enter 下一处 / Shift+Enter 上一处、匹配计数、大小写 / 正则 / 全字匹配
  • 入口:Ctrl/Cmd+F、右键终端区域「搜索…」、命令面板 Folder Terminal: 搜索
  • 主题适配:浮层自动跟随 Obsidian 深浅主题

Folder Terminal 1.1.0

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 07 Sep 14:45

Folder Terminal 1.1.0

新增终端内搜索功能,并补齐对应入口与快捷键。

✨ 新功能:终端内搜索

在终端缓冲区里检索历史输出,支持高亮全部匹配 + 当前匹配定位,无需把终端内容贴到外部编辑器再 Ctrl+F。

  • 唤起方式(任选其一)
    • 快捷键 Ctrl/Cmd + F
    • 右键终端区域 → 「搜索…」
    • 命令面板 → Folder Terminal: 搜索
  • 交互
    • 输入框实时增量搜索(输入即高亮,200ms 防抖)
    • Enter 跳到下一处,Shift + Enter 跳到上一处
    • 浮层上的 ↑ / ↓ 按钮等价切换
    • Esc 关闭并清空高亮,焦点自动回到终端
    • 右下角显示匹配计数 当前/总数(无匹配显示「无匹配」)
  • 选项
    • 区分大小写
    • 正则(把搜索词当作 JS 正则)
    • 全字匹配(仅匹配被非词字符包围的完整词)
  • 主题适配:搜索浮层按 Obsidian 当前深色 / 浅色主题自动着色(GitHub 风格),匹配高亮色与终端配色协调

⚙️ 依赖变更

  • 新增 @xterm/addon-search@^0.15.0,提供搜索内核(findNext / findPrevious / 匹配高亮 decorations)
  • 搜索浮层 UI 由插件自实现(未依赖 xterm 6.x 的 Terminal.showSearch,后者仍处于 beta,生态未稳),保证在 @xterm/xterm@5.5.x 上稳定运行

📦 安装 / 更新

  • 社区市场更新,或从 Releases 下载 main.js / manifest.json / styles.css 三件套覆盖 .obsidian/plugins/folder-terminal/。
  • BRAT 用户:指定 1.1.0 tag 安装。

Release assets(三个文件,分别拖拽上传)

  • main.js
  • manifest.json(版本 1.1.0)
  • styles.css

1.0.0

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 04 Sep 15:01

Folder Terminal 1.0.0

首个稳定版 🎉。本次更新彻底解决了 Windows 下终端「打不开 / 无法输入 / 中文乱码 / 输入残留」等一系列问题,Windows 与 macOS 现在都能稳定使用。

✨ 亮点

  • 🪟 Windows 终端全面可用:弃用不稳定的 winpty,改为直连 cmd.exe 管道,启动即用,不再挂死在死进程上。
  • 🔤 中文输出不再乱码:GBK / UTF-8 自适应解码,版权行、系统消息、中文回显全部正常显示。
  • ⌨️ 输入所见即所得:本地回显 + 带光标的整行缓冲,Backspace / Delete / Ctrl+U / Ctrl+A / Ctrl+E 全部正常,删除后再次输入不再残留。
  • 🚀 热更新可靠:插件重载后自动关闭旧终端面板,确保新代码一定生效(告别「改了没反应」)。

🐛 主要修复

  • 输入翻倍:修复 xterm.onData 被重复注册导致每个按键触发两次(输入 ps 变成 psps)。
  • 退格删不干净:修复 Delete 键的 CSI/SS3 转义解析 bug,消除删除后再次输入出现残留字符的问题。
  • 回车不执行命令:Windows 管道模式下补全 \r → \r\n,回车真正提交命令。
  • 打字无回显:新增 LocalEcho 本地回显,管道模式下也能即时看到输入。
  • Backspace 报错:DEL(\x7F) 转 BS(\x08),消除 xterm.js 报 Parsing error: code 127。
  • GBK 乱码:按 chunk 嗅探编码,严格 UTF-8 校验失败回退 GBK,无需引入 iconv-lite。

⚠️ 已知限制

  • Windows 走管道模式(非真实 PTY),回车后命令行会回显两次(一次本地回显、一次 shell 回显),属正常现象;追求完整体验需引入 node-pty 走 ConPTY(已列入后续规划)。

📦 安装 / 更新

  • 社区市场更新,或从 Releases 下载 main.js / manifest.json / styles.css 三件套覆盖 .obsidian/plugins/folder-terminal/。
  • BRAT 用户:指定 1.0.0 tag 安装。

Release assets(三个文件,分别拖拽上传)

  • main.js
  • manifest.json(版本 1.0.0)
  • styles.css

v0.4.8

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 31 Aug 03:07

Folder Terminal 0.4.8

🐛 Bug Fixes

  • 设置面板现在正确显示全部 6 个设置项。
    在 Obsidian 1.13+ 上,声明式 getSettingDefinitions() 存在渲染管线边界问题(框架正确返回 6 项却只渲染第 1 项,经 dev console 诊断确认)。
    0.4.8 回退到 imperative display() 渲染路径,6 项(界面语言 / 默认 Shell / 字号 / 配色方案 / 复用终端面板 / 默认启动命令)全部稳定显示,且切换语言时标签、副标题、控件当前值同步刷新。
  • 切换界面语言后设置面板不再"卡旧语言"(延续 0.4.7 的 i18n 修复)。

✨ Improvements

  • README 中英双语化,内嵌三张截图(悬停 / 多标签 / 设置页)。
  • minAppVersion 提升到 1.13.0(支持声明式设置 API 与最新终端 API)。

🔧 Under the hood(社区审核合规,用户无感知)

  • 移除所有 innerHTML 与内联 .style.* 赋值 → 改用 setIcon() / setText() / CSS 类。
  • 移除运行时动态注入 <style>,xterm.css 合并进 styles.css。
  • setTimeout / requestAnimationFrame 加 window. 前缀(popout 窗口兼容)。
  • 移除 builtin-modules 依赖(改用 esbuild platform:"node" 自动 external)。
  • manifest 描述移除 "Obsidian" 一词。
  • 类型安全清理(any / unsafe-assignment / unsafe-member-access 等)。
  • CSS text-decoration 组合值改写为 text-decoration-line + text-decoration-style 简写,规避 linter 误报。

📦 安装 / 更新

  • 社区市场更新,或从 Releases 下载三件套手动覆盖。
  • BRAT 用户:folder-terminal 仓库装 0.4.8 tag。

Release assets(三个文件,单文件分别拖拽上传)

  • main.js (339873 B)
  • manifest.json (368 B,版本 0.4.8)
  • styles.css (16029 B)

v0.4.7

Choose a tag to compare

@FIRSTKANG FIRSTKANG released this 31 Aug 02:44

Folder Terminal 0.4.7

Hover over a folder in the file explorer to reveal a terminal icon; click it to open a real shell (PTY) docked at the bottom, rooted at that folder.

🐛 Bug Fixes / 修复

  • Language switch now updates the settings UI correctly (关键修复)
    Switching the interface language in Settings → Folder Terminal now immediately refreshes all setting labels, descriptions and the current value shown on each control. (Previously the labels could get stuck on the language active at first open.)
    切换「界面语言」后,设置面板的标签、副标题以及每个控件的当前值会同步刷新,无需重开设置页。

✨ Improvements / 改进

  • Bilingual README + embedded screenshots
    README is now available in Chinese and English, with hover / multi-tab / settings screenshots embedded directly (no more stale placeholder text).
    README 中英双语化,并内嵌悬停、多标签页、设置页三张截图。

🔧 Under the hood / 技术清理(社区审核合规)

The following changes were made to pass the Obsidian community-plugin automated review:

  • Raised minAppVersion to 1.13.0 (uses getLanguage, revealLeaf, and the declarative settings API).
    最低版本要求提升至 1.13.0。
  • Removed all direct innerHTML and inline element.style.* assignments → replaced with setIcon() / setText() / CSS classes (security / sandbox compliance).
    移除所有直接 innerHTML 与内联 .style.* 赋值,改用 setIcon() / setText() / CSS 类。
  • Removed dynamically created <style> element → xterm.js CSS is now bundled into styles.css.
    移除运行时动态注入的 <style>,xterm.js 样式合并进 styles.css。
  • Replaced bare setTimeout / requestAnimationFrame with window.setTimeout / window.requestAnimationFrame (popout-window compatibility).
    全局定时器改用 window. 前缀,兼容弹出窗口场景。
  • Dropped the builtin-modules dependency (build now uses platform: "node" so Node built-ins stay external).
    移除 builtin-modules 依赖(构建改用 platform: "node" 自动 external 化 Node 内置模块)。
  • Removed the word "Obsidian" from the manifest description (reviewer policy).
    从 manifest 描述中移除 "Obsidian" 一词(审核规范)。
  • Type-safety cleanups: narrowed any / unknown usages flagged by the lint bot.
    收敛类型断言,清理 any / unsafe 告警。

📦 Installation / 安装

  • Community market: search "Folder Terminal" and update.
    社区市场搜索 Folder Terminal 并更新。
  • BRAT: add FIRSTKANG/folder-terminal and install the 0.4.7 release.
  • Manual: download main.js / manifest.json / styles.css from this release and drop them into your vault's .obsidian/plugins/folder-terminal/ folder.