# Picote(Obsidian Columns) **Picote** 是给设计师和重度笔记用户用的 Obsidian 分栏插件:偏重**拖拽采集**与**尽量不打扰编辑流程**的实现。 --- ## 为什么选择 Picote - **低摩擦采集**:网页/花瓣/小红书/Pinterest 等场景下,倾向用**拖拽**把图放进分栏(比依赖粘贴更稳)。 - **智能本地化**:能嗅探远程图 URL,静默下载并重命名后,把链接换成本地 `![[image.png]]`。 - **写入节奏**:配合 `requestAnimationFrame` 等节奏,减轻高频写回导致的卡顿或报错。 - **复杂 CDN**:对无扩展名、防盗链等链接有专门嗅探链路。 插件界面与交互由作者按 UI/UX 思路做过拖拽反馈等方面的打磨。 --- ## 功能概要 - 简洁的分栏书写方式,预览下布局顺滑。 - 跨平台 CDN / 外链识别管线。 - 建议优先使用**拖拽**,作为与 Obsidian/CodeMirror 配合最稳的路径。 - **图片单击放大**(正文与分栏通用):滚轮缩放,底部提示「鼠标滚轮支持图片放大缩小」。 --- ## 安装与升级(通用) 1. 从 [GitHub Releases](https://github.com/) 下载对应版本的 `main.js`、`manifest.json`、`styles.css`(以 Release 资产为准)。 2. 放到 `.obsidian/plugins/picote/`(目录名必须与 `manifest.json` 里的 `id` 一致)。 3. 在「第三方插件」中启用;**升级后**建议**关闭插件再启用**,或重启 Obsidian。 下文各版本若在「所含文件」中**未写明** `styles.css`,则表示该版本未改样式文件,只需按需替换所列文件。 > 版本号以仓库 [`manifest.json`](./manifest.json) 的 **`version`** 字段为准。 --- ## 更新日志(精简) ### [2.3.8] — 2026-05-19 **类型**:功能增强(图片预览) **所含文件**:`main.js`、`styles.css`、`manifest.json` **升级**:替换上述三个文件后,**完全退出 Obsidian 再打开**(或关闭 Picote 再启用),确保样式与脚本生效。 #### 图片单击放大(全文 + 分栏) **适用范围**:笔记正文与 Picote 分栏内的图片(PNG / JPG / JPEG / WebP / GIF / SVG 等),无论来自外链、本地 `![[...]]`、网页拖入或分栏内拖放。 **交互**: | 操作 | 说明 | |------|------| | **单击图片** | 打开全屏预览(暗色遮罩) | | **鼠标滚轮** | 放大 / 缩小图片 | | **Ctrl + 滚轮** | 更精细的缩放步进 | | **Esc** | 关闭预览,回到笔记 | | **点击右上角 ×** | 关闭预览 | | **点击暗色背景** | 关闭预览 | **分栏内额外说明**: - **Shift + 单击**图片:仍可选中媒体,用 **Delete / Backspace** 删除(与「单击放大」并存)。 - 分栏图片上的**下载按钮**不受影响,不会误开大图。 #### Esc 关闭修复(2026-05-19) 原先 Esc 绑在 `document` 冒泡阶段,常被 CodeMirror / Obsidian 先拦截,只能点 × 关闭。 **处理**:在 **`window` 捕获阶段**监听 `keydown`;预览层设置 `tabindex` 并在打开时聚焦;灯箱自身也监听 Esc。 #### 预览文案与层级(2026-05-19) - 底部提示固定为:**「鼠标滚轮支持图片放大缩小」**(`position: fixed` 贴底显示)。 - **层级**:放大后的**图片在上层**(`z-index: 20`),文案在底层(`z-index: 10`),关闭按钮在最上(`z-index: 30`);滚轮放大时图片可叠在文案之上,避免文案挡住画面主体。 --- ### [2.3.7] — 2026-05-19 **类型**:稳定性修复 + 面向 Obsidian 社区目录的内部整理 **所含文件**:`main.js`、`manifest.json` **Bug 11:两栏分别放入多张图片(≈7 张)后,分栏下方仍漏出一行「三个点」(闭合围栏)** 原 `MutationObserver` 挂在 `.cm-embed-block`,但 Live Preview 下闭合围栏(三个反引号)经常被渲染成**外层 `.cm-content` 的另一条 `.cm-line`**,观察器收不到通知;多图加载又超出原本 1.4s 的兜底延时窗口。 **处理**:观察器改挂 `.cm-content` / `.markdown-preview-section`,加 `requestAnimationFrame` 节流并去掉昂贵的 `characterData`;新增 `bindMediaLoadFenceCleanup`,每张 `` / `