思源筆記 v2.8.10 完整解讀:Windows 7 最終支援版、固定表格表頭與插件系統發布前的 API 演進
【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan
思源筆記(SiYuan)v2.8.10 是一版具有里程碑意義的發布:它是官方聲明最後一個支援 Windows 7、Windows 8 與 Server 2012 的版本,同時也是「插件系統正式發布」前最後一次對插件配置與 API 的大規模打磨。本篇文章以 v2.8.10 官方變更記錄為主線,逐項解讀本次新增的功能改進、缺陷修復與開發者 API 變更,並結合當前倉庫(app、kernel)中的真實源碼與配置文件,說明這些變更在代碼層面的落地方式,幫助使用者在升級前了解版本邊界,也幫助插件開發者理解 bazaar 集市包配置與事件系統的演進脈絡。
適用場景與閱讀收益:正準備從舊版升級的思源桌面端使用者、希望遷移/適配 v2.9.0 插件系統的開發者、以及維護舊版環境(Windows 7/8)的部署人員,可從本文明確版本支援邊界、核對缺陷修復清單,並掌握
minAppVersion、backends、frontends等集市包配置項的來源與含義。
版本定位:桌面端支援邊界的轉折點
v2.8.10 在變更記錄「概述」中明確宣告:
這是最後一個支持 Windows 7、8 和 Server 2012 的版本,升級到 Windows 10 或更高版本後才能使用後續版本的思源筆記。
換言之,v2.8.10 是舊版 Windows 使用者所能安裝的最後一個思源桌面版本。從 v2.9.0 起,思源將依賴更高版本的系統能力,因此仍在 Windows 7/8/Server 2012 上運行的環境,應將此版本視為凍結版本,並提前規劃數據遷移路徑(工作空間目錄整體備份即可跨版本遷移,參見 WORKSPACE.md 對工作空間結構的說明)。
與此同時,該版本還承載了兩條「前瞻性」信息:
- 英文論壇 LiuYun 上線:官方英文論壇正式開放,後續計畫在思源「設置 - 賬號」中支持通過英文論壇賬號登錄,並在此之後開放非中國大陸地區的雲端數據同步與備份服務。
- 插件系統即將正式發布:v2.8.10 是插件系統正式發布前的最後一版,官方計畫於v2.9.0正式發布插件系統,並歡迎開發者基於該系統實現實用性與趣味性兼顧的插件。
正因如此,本版本的「開發者」變更記錄異常密集——多達 13 項插件 API / 配置項調整,本質上是在為 v2.9.0 的正式發布做最後的兼容性收斂。這些變更在當前倉庫源碼中仍有完整對應,是理解插件系統設計思路的最佳教材。
表格表頭固定顯示:custom-pinthead的落地實現
本次版本新增「支持固定顯示表格的表頭」(issue 8294)。這一功能在當前倉庫源碼中保留了完整實現鏈路:
- 菜單開關位於 app/src/menus/protyle.ts,在表格上下文菜單中提供「固定表頭 / 取消固定表頭」選項,通過設置或移除
custom-pinthead屬性實現切換(id分別為pinTableHead與unpinTableHead); - 表格渲染與結構處理位於 app/src/protyle/util/table.ts,其中判斷
custom-pinthead === "true"以調整表格結構; - 樣式層面由 app/src/assets/scss/protyle/_wysiwyg.scss 承載:當
&.table[custom-pinthead="true"]生效時,thead採用position: sticky,實現滾動時表頭吸附在可視區頂部的效果; - 搜索結果頁也同步感知該屬性(app/src/search/util.ts),確保搜索預覽中表頭固定行為一致。
由此可見,該功能並非一次性補丁,而是貫穿「菜單切換 → 屬性標記 → 表格渲染 → 全局樣式」的完整特性,後續在文檔樹、搜索結果等場景中均能復用同一套標記語義。
編輯器體驗改進
字號快速縮放開關
新增「編輯器字號快速縮放」開關(issue 8297),使用者可在設置中啟用/停用編輯器字號的快捷縮放能力。字號相關設置的集中管理可在 app/src/config 下的設置頁簽中找到對應配置組,屬於編輯體驗層的通用開關,方便在不同顯示環境下快速調整閱讀舒適度。
從 IDE 粘貼代碼不再轉義<與>
修復了從 IDE 粘貼代碼時<、>被額外轉義的問題(issue 8340),使得包含泛型、模板字面量等符號的代碼塊粘貼後可保持原樣,減少二次修正成本。
其他編輯器與界面改進
- 標題創建或刪除後實時更新大綱面板(issue 8372),避免大綱與文檔內容不一致;
- 改善多塊「複製 - 重複」插入行為(issue 8394),多選塊重複插入的結果更穩定;
- 改善「最近使用的外觀」樣式(issue 8392);
- 自定義塊標菜單移至二級菜單中(issue 8419),收斂一級菜單項,屬於插件 API 影響下的 UI 結構調整;
- 粘貼 PDF 標註引用時移除非法字符(issue 8403);
- 移動端橫拖看板時不再誤拉出側欄面板(issue 8402);
- Linux 端針對
version GLIBC_x.xx not found錯誤(issue 8334)進行了適配處理,以兼容部分較舊 glibc 的發行版; - 始終顯示窗口控制按鈕(issue 8344),避免在某些窗口模式下控制按鈕被隱藏;
- 優化獲取雲端快照的性能(issue 8387)。
文檔樹、反鏈與搜索排序規則
「文檔樹、反鏈、標籤和模板按字母排序時忽略大小寫」(issue 8360)——排序規則從區分大小寫調整為不區分大小寫,使a與A開頭的條目按自然閱讀順序排列,符合多數使用者的預期,也避免了大小寫混合時排序跳變造成的檢索困難。
導入 Markdown 的公式解析擴展
「導入 Markdown 時支持$後跟數字解析為公式」(issue 8362):此前形如$5之類「美元符號緊跟數字」的文本可能在導入時被誤判為貨幣符號或普通文本;本次調整後,這類內容會按行級/塊級公式規則嘗試解析,減少從 Markdown 遷移文檔時公式丟失的情況。涉及 Markdown 語法解析的底層處理位於 kernel 的 kernel/util/lute.go 及其依賴的 Lute 引擎。
Pandoc 自定義路徑優化
「自定義 Pandoc 路徑後工作空間不再重複初始化內置 Pandoc」(issue 8377)。思源默認隨安裝包分發內置 Pandoc(見 app/pandoc 下各平台的 zip 包),用於文檔導出。若使用者自行指定了自定義 Pandoc 二進位路徑,舊版可能仍會重複初始化內置 Pandoc,造成冗餘資源佔用;本次修復後,一旦配置了自定義路徑即跳過內置初始化。
該配置在當前源碼中位於導出設置頁簽 app/src/config/tabs/exportTab.ts,配置鍵為export.pandocBin:設置界面提供路徑選擇(pandocBinChooser)、重置(pandocBinReset)與當前路徑顯示(pandocBinPathDisplay),將配置項置空即可恢復使用內置 Pandoc。
搜索與引用粘貼的細節修復
- 搜索輸入框無法選中文本(issue 8331):修復了搜索框中文本無法被正常框選複製的問題;
- 新頁簽打開間隔重複報錯(issue 8337):修復間隔重複在新頁簽打開時的異常;
- 只讀模式下大綱定位不正確(issue 8356):修復只讀視圖中從大綱跳轉的錨點偏差;
- 在包含
"的文本上粘貼引用或塊超鏈接解析異常(issue 8359):當被粘貼文本含雙引號時,引用/塊超鏈接的解析結果不再錯亂; - 在表格中按
F5不生效(issue 8367):修復表格環境內刷新/重算快捷鍵失靈; - 行級公式顯示
<wbr>(issue 8378):移除行級公式渲染結果中多餘的換行機會點; Backspace刪除 Markdown 轉義符異常(issue 8406):修復退格刪除轉義字符時的行為異常。
集市(Bazaar)體驗與配置演進
v2.8.10 對集市進行了多項改進,這些改動直接服務於即將到來的插件系統:
- 集市介紹頁(issue 8324):集市不再只是簡單的列表,而是具備介紹性質的入口頁,便於使用者了解集市包的用途與安裝方式;
- 集市包繁體中文顯示(issue 8342):完善集市包的繁體中文(
zh_CHT)文案顯示; - 變更記錄支持繁體中文(issue 8333):變更記錄開始提供繁體中文版本——本文所對應的 v2.8.10_zh_CHT.md 即為該能力的直接產物,與簡體版本(v2.8.10_zh_CN.md)並行維護;
- 用戶指南不再支持一鍵分享到社區(issue 8388):收斂分享範圍,用戶指南文檔僅保留本地閱讀用途。
文檔層面的完善
本版本同步補齊了兩處重要文檔:
- 在用戶指南中新增「訂閱過期後刪除雲端存儲」的詳細說明(issue 8370),讓使用者明確訂閱過期後雲端數據的處理策略與刪除機制;
- 在自述文件中新增架構設計章節(issue 8416)——該架構說明在當前倉庫的自述文檔體系中仍可查閱,例如 README.md 及其多語言版本(README.zh-CN.md、README.ja.md、README.tr.md),系統性地描述了思源「前後端分離、數據本地優先」的總體設計。
開發者視角:插件系統發布前的 API 收斂
v2.8.10 的「開發者」變更記錄是本次發布的重頭戲,共 13 項,全部指向插件系統的正式化。逐條解讀如下:
集市包配置項調整(重要,影響插件作者)
- 新增
minAppVersion(issue 8330):集市包可聲明所需的最低思源應用版本,低於該版本的客戶端會提示版本不足而禁止安裝/升級。該字段在 kernel 側的Package結構體中有明確定義,見 kernel/bazaar/package.go 中的MinAppVersion string字段;前端集市列表(app/src/config/bazaar.ts)則將其用於安裝按鈕的禁用提示文案(bazaarNeedVersion替換${x}顯示所需版本)。此外 kernel/bazaar/installed.go 也用於已安裝包與當前版本的兼容性校驗。這意味著插件作者必須維護該字段,避免老版本思源載入依賴新 API 的插件。 - 刪除
i18n配置項(issue 8346):集市包的i18n字段被移除,展示文案改由displayName、description、readme等多語種字段統一承載。從 kernel/bazaar/package.go 可見當前Package結構中的DisplayName、Description、Readme均為LocaleStrings(按語種 key 的映射表),配合GetPreferredLocaleString按當前語言回退取值(default→en→en_US兼容歷史命名),插件作者應遷移到這一套語種機制。 - 新增
backends與frontends(issue 8386):插件可聲明自己運行於哪些後端/前端環境,用於標識插件在不同端(桌面端、移動端、內核等)的可用性。同樣可在 kernel/bazaar/package.go 的Backends []string、Frontends []string字段中確認。配合Kernels字段(聲明所需內核),構成了集市包完整的「運行環境能力描述」。
插件 API 方法改進
addTab增加Tab上下文(PR 8336):addTab回調現在可拿到完整的Tab上下文對象,便於插件在初始化時獲取當前頁籤狀態並執行差異化渲染;- 修復
addDock的部分缺陷(issue 8341),並支持序號(position)與顯示選項(issue 8347):dock 面板的註冊行為更可控,插件可指定停靠位置與是否默認顯示; - 修復頁籤不激活時調用
addTab.init的異常(issue 8350):此前僅在頁籤激活時才執行init,被動態切換的頁籤可能永遠得不到初始化,本次修正了初始化時機判斷; Menu.addItem支持傳入 DOM 元素(issue 8343):插件構建自定義菜單時,不再僅限於文本項,可直接注入自定義 DOM,使插件菜單可以容納圖標、表單控件等複雜內容。
事件系統擴充
- 新增
click-editortitleicon事件(issue 8335):點擊編輯器標題圖標時觸發,插件可借此攔截/增強標題欄操作。事件對應的類型聲明可在 app/src/types/index.d.ts 中檢索,其在標題菜單 app/src/protyle/header/openTitleMenu.ts 等模塊中協同工作。 eventBus新增open-noneditableblock事件(issue 8374):當使用者試圖打開不可編輯塊時派發該事件。從 app/src/protyle/toolbar/index.ts 的源碼可見其通過item.eventBus.emit("open-noneditableblock", ...)方式觸發,插件可監聽該事件實現「只讀塊的閱讀/導航增強」等擴展。- 改善插件系統設置交互(issue 8391):插件管理界面交互細節優化,為 v2.9.0 的正式發布鋪平了使用體驗。
升級與兼容性建議
綜合本版本信息,可總結出以下三條針對性建議:
- Windows 7/8 / Server 2012 使用者:v2.8.10 是支援邊界版本,如無升級系統的計畫,請保持在此版本並定期備份工作空間;如計畫跟進新版本,建議先完成系統升級再做思源升級。
- 插件/集市包作者:
minAppVersion已是必備配置項,i18n已刪除(改用多語種字段),backends/frontends與addDock/addTab/Menu.addItem的行為在此版本定型——以本版本(或更新的 v2.9.0)作為開發基準,可避免兼容性返工。 - 一般使用者:本次缺陷修復覆蓋搜索框選中、表格
F5、只讀大綱定位、轉義字符刪除等高頻交互場景,建議在升級後重點回歸這些路徑,並可結合 app/changelogs/v2.8.4-v2.12.8 下各版本變更記錄追蹤後續演進。
思源 v2.8.10 作為舊系統支援的收尾版與插件時代的開篇版,其代碼痕跡(固定表頭的custom-pinthead屬性鏈路、集市包Package結構的配置演進、事件系統的emit位置)至今仍完整保留在倉庫中,無論是升級評估、歷史回溯還是插件開發,都具有實際的參考價值。
【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考