思源筆記 v2.10.7 版本深度解析:缺陷修復、資料庫公測與編輯體驗打磨
【免费下载链接】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.10.7 版本更新記錄,系統梳理該版本在編輯器、匯出、搜尋、同步與開發者能力等方面的全部變更,並結合倉庫源碼(如 CORS 中間件、匯出預覽介面、資源類型定義等)還原各項改進的底層實現原理。讀完本文,你將完整掌握 v2.10.7 的升級收益、每個修復項的具體影響範圍,以及「資料庫(屬性視圖)公測」「匯出預覽自動刷新」等特性的實現脈絡。
一、版本概覽:一次值得升級的穩定性迭代
v2.10.7 是思源筆記 v2.10.x 系列中的一次例行修復版本。官方對該版本的定位非常明確:修復了一些缺陷,建議升級。這意味著該版本沒有引入破壞性變更,而是以「提升既有功能的穩定性與細節體驗」為核心目標,適合所有使用者平滑升級。
同時,該版本承載了一個重要的產品節點:從此版本開始,付費用戶可以優先參與「資料庫」特性的公測。資料庫(屬性視圖)是思源筆記基於區塊屬性建構的結構化資料管理能力,公測的開啟標誌著該特性從內部開發階段走向真實使用者驗證階段。
補充說明:官方公告中同步提及「功能特性」正處於早鳥價階段,且「年付訂閱」已包含「功能特性」,訂閱會員無需單獨購買。此為產品商業資訊,僅供參考,不影響本版本的技術內容。
二、改進功能:編輯、匯出、搜尋與同步的細節打磨
v2.10.7 共包含 13 項功能改進,主要集中在編輯器行為、匯出流程、搜尋體驗與資料同步四個面向。
2.1 編輯器體驗
| 改進項 | 影響場景 |
|---|---|
| 建立筆記本後自動刷新排序 | 解決新建筆記本後側邊欄排序不即時更新的問題,無需手動重整 |
| 改進清單項目下包含多塊時的傳統縮排表現 | 優化傳統縮排模式下,清單項包含多個區塊時的縮排層級呈現 |
改進表格中包含\|時行級公式的處理 | 修復表格單元格內含豎線字元時行級公式解析異常 |
改進表格中包含\|時行級程式碼的處理 | 與上行對應,豎線字元不再干擾行級程式碼的渲染 |
| 改進分隔線編輯 | 提升分隔線區塊的編輯操作體驗 |
| 使用固定標題時改進表格行插入 | 在表格啟用固定標題列時,插入行的行為更符合預期 |
這些改進集中在區塊編輯器的細節行為上。從倉庫結構看,思源的編輯器核心位於 app/src/protyle 目錄,表格、公式、程式碼等行級元素的渲染與互動邏輯均在該目錄下實現,而縮排與清單的處理則涉及 kernel/treenode 目錄中的區塊樹操作。
2.2 匯出與預覽流程
| 改進項 | 影響場景 |
|---|---|
| 改進匯出 PDF 長度表格的分頁策略 | 長表格跨頁時的分頁位置更合理,避免表格被生硬切斷 |
| 支援「匯出預覽」模式下使用 F5 刷新 | 預覽視窗可直接用 F5 重新載入最新內容 |
| 為預覽模式新增載入動畫和自動刷新 | 匯出預覽不再是靜態快照,內容變更後可自動刷新並提供載入回饋 |
「匯出預覽」是思源匯出工作流的重要一環。在前端,匯出預覽透過 app/src/protyle/export/index.ts 與 app/src/protyle/export/util.ts 中的fetchPost("/api/export/exportPreviewHTML", ...)請求觸發;在後端,對應介面由 kernel/api/export.go 中的exportPreviewHTML函式處理,該函式解析id(文件 ID,必填)、keepFold(是否保留摺疊狀態)、merge(是否合併為單文件)、image(是否包含圖片)四個參數,呼叫model.ExportHTML生成預覽 HTML 後返回。值得注意的細節是,程式碼中有一段針對「匯出 PDF 預覽時點擊塊引轉換後的腳註跳轉不正確」問題的處理——將預覽 HTML 中的本地位址替換為錨點形式,這正是該版本前後持續打磨的匯出品質問題之一。
2.3 搜尋
- 搜尋替換時不再剔除關鍵字首尾空格:此前搜尋替換會自動剝離關鍵字兩端的空格,導致帶空格片段的精確替換失效;此版本改為保留原始空格,使替換行為更符合直覺。搜尋的底層實作可參考 kernel/search/find.go 與前端 app/src/search 目錄。
2.4 資料同步與平台適配
| 改進項 | 影響場景 |
|---|---|
| 改進資料同步網路連結性檢查 | 同步前的網路探測更準確,避免誤報離線 |
| Pad 端正常退出應用程式時儲存版面配置 | 平板端退出時不再丟失視窗/面板佈局 |
改進瀏覽器端使用非127.0.0.1存取時鑑權失敗提示 | 透過 IP 遠端存取 Web 端時,登入失敗的提示資訊更清晰 |
網路連通性檢查在倉庫中的通用實作位於 kernel/util/net.go 的IsOnline函式:它會先解析目標 URL,對file://協議做本地檔案探測,否則執行實際的網路請求並設定超時;失敗時記錄network is offline警告日誌。該函式同時服務於集市線上狀態檢查(見 kernel/bazaar/stage.go 的isBazaarOnline),是思源多個依賴外網能力模組的共用基礎設施。
三、修復缺陷:九個高頻問題的根因與影響
v2.10.7 修復了 9 個缺陷,涵蓋行動端穩定性、鍵盤操作、外掛體系、剪貼簿與渲染等多個維度:
| 缺陷 | 影響範圍 |
|---|---|
| Android 14 上閃退 | 行動端穩定性關鍵修復,直接影響 Android 14 裝置使用者 |
| 列表項目 Shift+Tab 異常 | 列表項降級/升級縮排的鍵盤操作失效 |
| 禁用所有插件後其他集市區不工作 | 外掛全禁用時,集市(外掛、主題、模板、圖示等)其他分區被誤鎖定 |
| 任務清單中嵌套清單後貼上資料不完整 | 任務清單與嵌套清單組合場景下的剪貼簿資料丟失 |
| 搜尋介面連續快速點選分頁按鈕後出現負數 | 搜尋結果分頁的競態問題,頁碼被快速點擊減為負數 |
| 閃卡頁籤無法拖曳 | 閃卡標籤頁失去拖拽排序能力 |
| 從嵌入塊中開啟文件後不應該顯示「退出聚焦」 | 由嵌入塊進入文檔時,聚焦狀態誤判導致錯誤的功能表項出現 |
| Ctrl+滾輪調整字號後程式碼塊行號錯位 | 快捷縮放字號後,程式碼區塊的行號列與內容錯位 |
| 調整「外觀 - 字號」後程式碼塊行號錯位 | 設定面板調整全域字號後,同樣出現行號錯位 |
其中「程式碼塊行號錯位」出現兩次(快捷鍵與設定面板兩條觸發路徑),說明該版本對程式碼塊渲染進行了集中修復。程式碼塊的渲染與行號邏輯位於 app/src/protyle 的程式碼區塊相關模組,字號變化時需要重新計算行高,錯位問題通常源於字號變更後未觸發行號容器的尺寸重算。
四、開發者更新:資料庫公測與 CORS 能力補強
4.1 屬性視圖新增資源類型欄位
屬性視圖(Attribute View,即資料庫)新增了「資源」類型的欄位,用於在資料庫中存放並展示文件資源。資源類型在 kernel/av/value.go 中定義為兩種枚舉值:
AssetTypeFile = "file"—— 普通文件類型(連結也歸入文件類型)AssetTypeImage = "image"—— 圖片類型
欄位結構Asset包含Type欄位標識資源類型。該類型在 kernel/av/filter.go、kernel/model/export.go 等多處被分支判斷,分別處理圖片與文件在過濾、匯出等場景下的差異化行為,例如匯出時圖片資源與文件資源走不同的處理路徑。前端對應的屬性視圖實作位於 app/src/av 目錄。
4.2 資料庫公測啟動
此版本正式開啟「資料庫公測」,付費用戶可優先參與。從倉庫現狀看,屬性視圖(資料庫)的完整實現分佈在 kernel/av(過濾、排序、分組、關聯、各類佈局如表格/看板/畫廊)、kernel/sql/av*.go(資料庫 SQL 層)與 app/src/av(前端渲染)等模組,是思源在區塊筆記之上構建的結構化資料能力,其底層依賴每個區塊的屬性(Attribute)系統。
4.3 CORS 預檢快取與插件菜單位置
- 為 OPTIONS 請求新增
Access-Control-Max-Age標頭:該改進服務於瀏覽器端與外掛的跨源請求場景。在 kernel/server/serve.go 的corsMiddleware中,當請求方法為OPTIONS(CORS 預檢請求)時,除原有的Access-Control-Allow-Origin、Access-Control-Allow-Credentials、Access-Control-Allow-Headers、Access-Control-Allow-Methods等標頭外,新增了Access-Control-Max-Age: 600並以204狀態碼直接終止請求。這意味著瀏覽器可將預檢結果緩存 600 秒,減少後續請求的額外往返,對外掛或第三方工具頻繁呼叫思源 API 的場景有實際的效能收益。該中間件同時對/webdav、/caldav、/carddav路徑分別下發對應的允許方法集合。 - 改進文件塊標菜單中的插件菜單項目位置:調整文件區塊標菜單中插件擴展項的排序位置,使外掛注入的菜單項與內建菜單項的層級關係更合理。
4.4 資料庫插入塊動畫
資料庫(屬性視圖)中插入區塊時增加了動畫回饋,提升結構化資料編輯的視覺連貫性。此類互動動畫的實作可參考前端 app/src/av 目錄下各佈局元件的渲染邏輯。
五、從更新記錄到源碼:如何驗證與複現
如果你希望在自己的環境中驗證本版本的改進,可以沿著以下路徑深入:
- 匯出預覽流程:前端入口 app/src/protyle/export/util.ts → API 請求
POST /api/export/exportPreviewHTML→ 後端 kernel/api/export.go;路由註冊見 kernel/api/router.go。 - CORS 行為:直接閱讀 kernel/server/serve.go 的
corsMiddleware,可見各方法集合與標頭的下發邏輯。 - 網路連通性檢查:閱讀 kernel/util/net.go 的
IsOnline,理解同步/集市等模組的離線判定標準。 - 屬性視圖資源類型:從 kernel/av/value.go 的類型定義出發,追蹤
AssetTypeFile/AssetTypeImage在 kernel/av/filter.go 與 kernel/model/export.go 中的分支處理。
六、小結
v2.10.7 是思源筆記在 v2.10.x 穩定期的一次高品質修復版本:13 項改進聚焦編輯、匯出、搜尋與同步的使用細節;9 項缺陷修復覆蓋 Android 14 閃退、程式碼塊行號錯位、搜尋分頁競態等高頻痛點;開發者面向則以「屬性視圖資源類型欄位」與「資料庫公測」為轉捩點,預示著資料庫特性即將走向成熟。對於使用者而言,直接升級即可獲得上述全部收益;對於開發者而言,該版本同時是理解思源匯出管線、CORS 中間件與屬性視圖資料模型的良好切入點。
【免费下载链接】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),仅供参考