Hunk 0.14 发布详解:鼠标拖拽选择复制、折叠上下文内联展开与 Catppuccin 主题
开发工具代码评审CLIAI 应用【免费下载链接】hunkReview-first terminal diff viewer for agentic coders项目地址https://gitcode.com/gh_mirrors/hu/hunk点击查看免费下载Hunk 0.14是面向 agentic 编码者的 review-first 终端 diff 查看器在 2026 年 5 月下旬5 月 26 日 – 6 月 1 日发布的两个版本0.14.0 / 0.14.1。本指南围绕该版本的三大新增能力展开基于鼠标拖拽的文本选择与 OSC 52 剪贴板复制、折叠未变更上下文的内联展开、以及 Catppuccin Latte / Mocha 内置主题并附上 0.14.1 引入的本地性能基准测试与一批稳定性/安全修复的源码级解读。读完本文你将掌握 Hunk 0.14 的安装方式、copy_decorations配置的语义、上下文展开的交互细节与适用输入模式以及每个特性背后对应的源码实现路径。npm i -g hunkdiff0.14.1注意Hunk 0.14 已不是当前版本如需最新版本请查看 CHANGELOG.md 或仓库内的安装相关文档如 docs/README.md 对应的各平台安装说明。版本总览与发布节奏0.14 系列共包含两个小版本版本发布日期类型核心内容0.14.12026-06-01修复 新增本地性能基准测试固定pierre/diffs依赖0.14.02026-05-26功能 修复鼠标选择复制、内联上下文展开、Catppuccin 主题、agent 作者名等原始发布说明由bun run generate:changelog生成见 scripts/generate/generate-changelog.ts编辑入口是仓库根目录的 CHANGELOG.md。0.14.1本地性能基准测试与依赖修复新增本地性能基准测试0.14.1 为 Hunk 的启动startup、加载loading、渲染rendering、语法高亮highlighting、导航navigation与内存memory新增了本地基准测试并支持可选的竞品对比competitor comparisons。这套基准测试在仓库中的落地位置是 benchmarks/其入口与说明见 benchmarks/README.md运行入口为 benchmarks/run.ts。基准目录下按主题拆分了多个场景脚本例如启动与加载benchmarks/bootstrap-load.ts、benchmarks/working-tree-load.ts、benchmarks/huge-stream.ts渲染与布局benchmarks/render-layout.ts、benchmarks/terminal-width.ts高亮与缓存benchmarks/highlight-cache-layers.ts、benchmarks/highlight-prefetch.ts、benchmarks/worker-highlight-cache.ts内存与几何benchmarks/memory.ts、benchmarks/geometry-memory.ts、benchmarks/navigation-memory.ts、benchmarks/resize-memory.ts交互延迟benchmarks/interaction-latency.ts竞品对比benchmarks/competitors.ts从源码结构看基准测试分为lib/共享测试设施如 benchmarks/lib/appHost.tsx、benchmarks/lib/fixtures.ts、benchmarks/lib/benchmark-result.ts与release/按版本归档的 JSON 结果例如bench-0.15.0.json、bench-0.16.0.json等两个部分配合 scripts/benchmarks/compare-release-benchmarks.ts 可对发布版本之间的性能走向做对比分析。修复固定pierre/diffs依赖版本0.14.1 将pierre/diffs固定为 Hunk 实际测试过的版本避免上游有问题的1.2.6发布破坏npm install。这属于典型的锁定已验证依赖策略防止发布窗口期内的破坏性版本漂移。0.14.0新增功能详解鼠标拖拽选择与 OSC 52 剪贴板复制0.14.0 为 diff 视图加入了鼠标拖拽文本选择选中后将对应行复制到系统剪贴板通过终端 OSC 52 转义序列实现。更关键的是它引入了一个交互开关菜单View Copy decorations配置项copy_decorations该开关控制复制结果是否包含 diff rails增删符号栏、gutters行号槽与 file headers文件头或者只复制变更的代码本身。从源码看该配置定义在 packages/hunk/src/core/run/config.ts默认视图偏好中copyDecorations: false见 config.ts即默认只复制代码内容配置 schema 声明为key: copy_decorations、property: copyDecorations、类型boolean、运行期默认值false描述为 Include diff signs and line numbers in copied selections.config.ts它与其他视图偏好theme、mode、line_numbers、wrap_lines等一起被持久化保存对应prompt_save_view_preferences行为config.ts。选择与复制逻辑的几何核心在 packages/hunk/src/ui/components/panes/copySelection.ts值得注意的实现细节split 布局分侧锚定拖拽锚点按列归属左右窗格CopySelectionSide left | right分别对应 old/A 与 new/B 侧确保跨窗格选择不会混淆copySelection.ts双击/三击扩展双击按代码词边界扩展isCopyWordChar匹配[A-Za-z0-9_$]三击选中整行渲染文本且在 split 布局中三击只会选中点击所在的一侧避免跨窗格误选copySelection.tsdecorations 与否走两套渲染copyDecorations为真时使用renderDecoratedPlannedRowText保留装饰列并保留空白可视行为假时使用renderCodeOnlyPlannedRowText丢弃装饰与空白行copySelection.ts剪贴板写入路径复制时优先通过渲染层的 OSC 52 支持renderer.isOsc52Supported?.()copyToClipboardOSC52若终端不支持则给出提示 Clipboard copy unsupported in this terminal (enable OSC 52 to capture selections)packages/hunk/src/ui/components/panes/useDiffSelectionController.ts。也就是说copy_decorations true时复制的是所见即所得的完整 diff 视图文本含符号、行号、文件头false时复制的是纯净的变更代码——适合把某段改动直接贴进 PR 描述或 commit message。折叠未变更上下文的内联展开0.14.0 允许在不离开 review 的情况下展开折叠的未变更文件内容点击可展开的 gap 行形如▾ N unchanged lines不可展开时显示静态的··· N unchanged lines ···或选中 hunk 后按e键即可看到该 hunk 周围的上下文行与文件尾部行。关键限制该 affordance 仅对有可达源内容的输入模式显示包括hunk diff、show、stash show、file-pairdiff/difftool以及未跟踪文件而 raw 的hunk patch输入仍按原有方式渲染。加载过程的状态反馈非常细致加载进行中gap 行显示Loading N unchanged lines…加载失败显示Could not load N unchanged lines源文件过大显示Source too large to expand N unchanged lines展开成功后行首变为Hide N unchanged lines可再次折叠这些状态文本与FileSourceStatusloading/loaded/error其中 error 可携带too-large原因直接对应实现在 packages/hunk/src/ui/diff/expandCollapsedRows.ts。展开过程会把 gap 行替换为真实未变更行通过buildSplitContextRow/buildUnifiedContextRow分别构造 split 与 unified 布局的 context 行行 key 形如${fileId}:expanded:${position}:${hunkIndex}:${index}expandCollapsedRows.ts展开的上下文行复用与周围 diff 相同的语法高亮通过sourceLineSpans解析器保证视觉连续性源文本读取有上限控制见下文 0.14.0 修复项超大文件不会因展开而冻结或耗尽内存。Agent 作者名浮出为让多 agent review 场景一眼可读0.14.0 在内联注释与对应的 agent popover 中浮出 agent 作者名当注解没有作者时则使用 fallback 标题兜底。Catppuccin Latte 与 Mocha 内置主题0.14.0 将Catppuccin Latte浅色与Catppuccin Mocha深色加入内置主题。在源码的主题目录 packages/hunk/src/core/theme/catalog.ts 中可以看到完整的 Catppuccin 家族主题 IDcatppuccin-frappe、catppuccin-latte、catppuccin-macchiato、catppuccin-mochacatalog.ts背景色Latte 为#eff1f5Mocha 为#1e1e2ecatalog.ts前景色Latte 为#4c4f69Mocha 为#cdd6f4catalog.tsdiff 语义色Latte 的 added#40a02b/ removed#d20f39/ modified#df8e1dMocha 的 added#a6e3a1/ removed#f38ba8/ modified#f9e2afcatalog.ts。同时 0.14.0 修复了自定义主题配置使 Catppuccin Latte 与 Mocha 可以作为自定义主题的base基底主题使用相关测试见 packages/hunk/src/core/theme/customThemes.test.ts。主题的完整配置方式可参考仓库中的 docs/themes.md。0.14.0 修复项稳定性、安全与兼容性0.14.0 还包含一批值得关注的修复按主题归类如下输入与安全性加固控制序列注入防护对来自 diff、文件路径、notes、展开上下文、复制选区以及 pager 回退输出的内容做了终端渲染加固防止恶意内容注入控制序列相关清理工具见 packages/hunk/src/lib/terminalText.ts 中的sanitizeTerminalLine/sanitizeTerminalSpans展开上下文行在 expandCollapsedRows.ts 中同样经过清理pager 环境变量硬化纯文本 pager 启动时PAGER/HUNK_TEXT_PAGER中的 shell 元字符作为普通参数传递而非被隐式求值避免意外执行会话根目录限制daemon 命令无法读取初始 Hunk session root 之外的文件限制 session reload 的访问范围。渲染与文本测量宽字符对齐修复split diff 中宽 CJK 与 emoji 字符的对齐改为按终端单元格测量渲染文本相关测量工具measureTextWidth、cellRangeToCharRange、sliceTextByWidth见 packages/hunk/src/ui/lib/text.ts换行行 hover 背景稳定被 wrap 的 diff 行 hover 背景不再导致 add-note affordance 移动行布局Git log ANSI 颜色保留hunk pager回退到纯文本终端 pager 输出非 diff 内容时保留原颜色。快捷键与输入模式内联笔记复制和弦Ctrl-C、Ctrl-Shift-C 等复制和弦不再误触发笔记操作tmux CSI-u 兼容修复 tmux 发送 CSI-u 键盘输入时内联笔记的 Ctrl-S 保存e快捷键从仓库子目录启动 Hunk 时e编辑快捷键不再失效。pager 与 VCS 检测静态 pager 输出captured pager 环境尊重用户配置的自定义主题hunk pager在 captured pager 与 dumb-terminal 上下文中直接透传非 diff 文本而不启动lessVCS 自动检测嵌套在父级 Jujutsu workspace 下的 Git 仓库默认仍正确进入 Git 模式相关检测逻辑见 packages/hunk-vcs/src/ 与 packages/hunk/src/core/run/。相关文档与进一步阅读0.14 的两个主要交互特性鼠标选择、上下文展开对应仓库内的相关文档键盘与鼠标操作docs/keybindings.md主题配置docs/themes.md本版本的基准测试结果目录benchmarks/release/版本演进全览CHANGELOG.md小结Hunk 0.14 的关键价值在于把选择、复制、展开、换主题这些高频 review 动作做得足够顺手且安全copy_decorations让复制结果在完整 diff 视图与纯净代码之间自由切换▾ N unchanged lines/e键的内联展开让大文件的上下文查看不再打断 review 流Catppuccin Latte / Mocha 则补齐了浅色与深色两个经典配色。配合 0.14.1 落地的本地基准测试与逐项加固的渲染/输入安全这一系列可以视为 Hunk 在交互完备度与工程严谨度上的一个重要节点。赞分享开发工具代码评审CLIAI 应用【免费下载链接】hunkReview-first terminal diff viewer for agentic coders项目地址https://gitcode.com/gh_mirrors/hu/hunk点击查看免费下载相关推荐GraphCast用图神经网络几分钟生成10天全球天气预报的深度学习天气模型GraphCast用图神经网络几分钟生成10天全球天气预报的深度学习天气模型 如果三天后某地会下大雨还是晴天传统数值天气预报模式可能要等超算跑上数小时才能给人工智能深度学习科研预训练Element Plus折叠面板Collapse内容折叠与展开控制Element Plus折叠面板Collapse内容折叠与展开控制 在现代Web应用中内容折叠与展开是极其常见的交互模式。Element Plus的Coll前端UI组件MacVim鼠标拖动选择配置选区行为与复制方式MacVim鼠标拖动选择配置选区行为与复制方式 你是否曾在MacVim中尝试用鼠标拖动选择文本却发现结果与预期不符本文将详细介绍如何配置MacVim的鼠标开发工具桌面应用上一篇如何快速上手AI视频生成HunyuanVideo-Avatar 5步终极指南下一篇DiligentEngine工具链详解纹理加载、资源管理与状态打包工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

React 360 CLI 使用与生成器机制完全指南:用 `react-360 init` 一键创建 360° 项目

React 360 CLI 使用与生成器机制完全指南:用 `react-360 init` 一键创建 360° 项目

前端3D渲染 【免费下载链接】react-360 Create amazing 360 and VR content using React 项目地址: https://gitcode.com/gh_mirrors/re/react-360 点击查看 免费下载 本指南围绕 React 360 官方脚手架工具 react-360-cli 展开,讲解其安装方式、init 命…

2026/9/25 2:39:15 阅读更多 →
Humanizer 相对时间人性化:DefaultDateTimeHumanizeStrategy 默认策略源码级解析

Humanizer 相对时间人性化:DefaultDateTimeHumanizeStrategy 默认策略源码级解析

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 Human…

2026/9/25 2:39:15 阅读更多 →
标准系列文章写作规范与技术实践指南

标准系列文章写作规范与技术实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 2:39:15 阅读更多 →

最新新闻

MySQL表空间传输实战:超大单表分钟级迁移原理与踩坑指南

MySQL表空间传输实战:超大单表分钟级迁移原理与踩坑指南

表空间传输这个功能,说实话在很多DBA的日常工具箱里属于"知道但不常用"的那一类。直到有一天我接到一个需求:线上有一张将近200GB的流水表,要从一个MySQL实例迁到另一个新实例,业务方给的窗口只有30分钟。mysqldump导数…

2026/9/25 3:18:43 阅读更多 →
MindSpeed-LLM 数据预处理完整指南:预训练与SFT数据一键转换实操

MindSpeed-LLM 数据预处理完整指南:预训练与SFT数据一键转换实操

MindSpeed-LLM 数据预处理完整指南:预训练与SFT数据一键转换实操 【免费下载链接】MindSpeed-LLM 昇腾LLM分布式训练框架 项目地址: https://gitcode.com/Ascend/MindSpeed-LLM MindSpeed-LLM(昇腾LLM分布式训练框架)通过一条 preproc…

2026/9/25 3:18:43 阅读更多 →
EasyXMen支持哪3款车规芯片?NXP S32K148、英飞凌TC397、瑞萨RH850平台对比与上手指南

EasyXMen支持哪3款车规芯片?NXP S32K148、英飞凌TC397、瑞萨RH850平台对比与上手指南

EasyXMen支持哪3款车规芯片?NXP S32K148、英飞凌TC397、瑞萨RH850平台对比与上手指南 【免费下载链接】开源小满EasyXMen代码仓库 持续18年精心打造的安全车控操作系统BSW代码。 项目地址: https://gitcode.com/easyxmen/XMen 开源小满 EasyXMen 是一款持续打…

2026/9/25 3:18:43 阅读更多 →
Kata Containers 文档贡献实战指南:mkdocs-materialx 文档站点架构与写作规范详解

Kata Containers 文档贡献实战指南:mkdocs-materialx 文档站点架构与写作规范详解

云原生容器运行时 【免费下载链接】kata-containers Kata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolat…

2026/9/25 3:18:43 阅读更多 →
SHX字体缺失导致DWG乱码?从原理到批量修复的完整指南

SHX字体缺失导致DWG乱码?从原理到批量修复的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 3:18:43 阅读更多 →
On-Policy Distillation:让量化模型边推理边学习

On-Policy Distillation:让量化模型边推理边学习

1. 项目概述:当大模型推理撞上硬件瓶颈,我们到底在“蒸馏”什么?最近在几个AI工程组的内部分享会上,几乎每次都会有人举起手问:“我们训了个7B的量化模型,部署到边缘设备后,推理延迟还是超标&am…

2026/9/25 3:17:42 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →