更新日誌
版本說明:羊角快車二創版使用標準語意化版本,獨立版本線從 v1.0.0 開始,發布標籤為
vX.Y.Z,預發布版本使用-beta、-rc.1等後綴(例如v1.2.0-beta.1)。MAJOR用於不相容變更,MINOR用於向後相容的新功能,PATCH用於缺陷修正與小幅改動。每次發布都會寫入本更新日誌;發布公告頁依改動規模與說明需求維護,改動較大或需要重點說明時會新建或更新公告頁,同一版本線的多次發布可合併到同一頁。同一條目同時涉及官方原版 openRin/Rin 的版本與本專案版本時,本專案版本寫作yjvX.Y.Z以示區別。目前最新版本為 v1.1.2。下文v0.3.0/v0.2.0為官方原版(上游)的歷史記錄。
v1.1.2 2026-10-26
把 REST API 與 MCP 的金鑰管理拆分為兩類。
本次更新
- 金鑰類型區分:
api_keys表新增key_type欄位(1 = API 介面金鑰,2 = MCP 金鑰),設定頁依「API 介面」與「MCP」兩個分頁分別管理 - 端點隔離:API 介面金鑰只能呼叫
/api/key/*,MCP 金鑰只能呼叫/mcp,類型不符時回傳403 - 權限邊界:
content.read僅對 MCP 金鑰開放
文件
- API 指南補充金鑰類型說明;遷移
0021.sql自動為歷史金鑰歸類 - 部署指南與 README 統一為單 Worker 架構說明:前端靜態資源隨 Worker 發布,無需建立 Cloudflare Pages 專案
升級說明
- 遷移自動執行:含
content.read的舊金鑰轉為 MCP 金鑰,其餘轉為 API 介面金鑰
v1.1.1 2026-10-26
新增 MCP 服務端,並修正自訂網域存取被拒的問題。
本次更新
- MCP 服務端:新增
/mcp端點,以 MCP 工具形式提供文章、動態、友連與站台設定的讀寫,API Key 驗證,依 scope 裁剪工具並新增content.read - 網域白名單:Host 與 Origin 校驗阻斷 DNS rebinding,自訂網域透過
MCP_ALLOWED_HOSTS放行,支援協定/連接埠寫法、萬用網域與*
修正
- 部署命令補齊
FRONTEND_URL與MCP_ALLOWED_HOSTS,網域被拒時回應內容會給出設定提示 - 網域校驗提前到驗證之前,被拒網域回傳 403 與
Invalid Host
文件
- 新增 v1.1 發布公告,API 指南補充自訂網域排查(421 / 403 區分)
升級說明
- 自訂網域站台需設定
MCP_ALLOWED_HOSTS或FRONTEND_URL後重新部署;本版本無資料庫遷移
v1.1.0 2026-10-24
二創版獨立版本線上的首個功能版本,收錄友連驗證雙方式等近期能力,並同步維護中英文文件。
本次更新
- 友連驗證支援 DNS TXT 與 HTML 檔案兩種方式
- JSON 解析完成後進入
awaiting_method_choice階段,由訪客選擇驗證方式:回覆1(或一/方案一/方法一)使用 DNS TXT 記錄,回覆2(或二/方案二/方法二)上傳 HTML 檔案 - DNS 方式:向訪客下發
_jiaofriend主機記錄、TXT 類型、驗證碼為記錄值的教學;驗證時透過 Cloudflare DNS-over-HTTPS 查詢_jiaofriend.訪客網域的 TXT 記錄並檢查是否包含驗證碼 - 檔案方式:保留原有嚴格校驗,GET 必須回傳 200 且剔除標籤/指令碼後的
<body>文字包含驗證碼 - 狀態機新增
awaiting_verification階段並記錄verifyMethod;修改友連時舊站台與新站台分別重新選擇驗證方式;升級前的verifying狀態自動回復到檔案驗證 - DNS 查詢透過可注入相依
resolveTxt(name) => Promise<string[]>實作,便於測試與替換解析器
- JSON 解析完成後進入
修正
- 修正友連驗證被 SPA 回退、自訂 404 頁面、403/500 與 30x 轉址誤判通過
- 修正
awaiting_json階段把非 JSON 本文誤判為格式錯誤並終止申請 - 修正
friends-sitemap.xml路由被前端 SPA 攔截 - 修正點選檢視金鑰會把加密儲存改成明文儲存
- 修正驗證碼圖片重複初始化導致申請崩潰
- 修正郵件解析在 CJS / ESM 產物下的相容性
文件
- 部署指南依目前實作重寫:倉庫選擇順序、站台變數、工作流程清單、遷移指令碼路徑與部署位址說明
- 文件目錄重構:
env.md、database.md遷入configuration/ - 新增 v1.0.0 發布公告,部落格導覽中二創版項目排在官方原版之前
- 資料庫文件補充
users.password的雜湊規則:SHA-256(無加鹽),手動修改 D1 中的密碼時必須寫入雜湊值 - 文件中同時出現兩個倉庫時,統一先列 羊角快車二創版(本倉庫) 並標註 官方原版 openRin/Rin(上游)
- 中英文文件同步更新
升級說明
- 友連驗證方式的選擇對既有友連無影響:升級前的
verifying狀態自動回復為 HTML 檔案驗證 - 其餘功能無需額外環境變數
v1.0.0 2026-10-24
羊角快車二創版獨立版本線的起點。本版本承接官方原版 openRin/Rin v0.3.0 的能力,並疊加二創版本已落地的功能與基礎架構。
新增功能
- 郵件自助友連:訪客透過郵件完成友連申請/修改/刪除,包含 JSON 範本、人機驗證碼圖片、申請取消指令、回覆攔截與新建郵件引導、依信箱綁定歸屬 UID
- 友連分組與排序:後台管理友連分組與顯示順序
- TOTP 雙因素驗證:全體使用者皆可使用,支援復原碼與登入限流
- API Key 外部呼叫體系:管理員在後台設定頁建立、撤銷金鑰並限定權限範圍
- friends-sitemap.xml:輸出已通過審核的友連,包含名稱與描述
- MailPort 多寄件位址:支援多個寄件端點依序輪詢,並相容舊有設定
- AI 能力:AI 摘要、AI 增強搜尋、自訂模型與回退模型佇列排序
- 內容與閱讀體驗:多套評論系統、Webhook 通知、RSS、Sitemap 與動態 robots.txt、友連可存取狀態定時檢查
修正
- 修正無密碼帳號啟用 TOTP 後無法登入
- 修正 API Key 介面 404 文案重複拼接、權限範圍列表為空
- 修正部署時批次上傳 Secret 的 10214 競態失敗
架構與部署
- 後端執行環境遷移到面向 Cloudflare Workers 的輕量框架,路由與相依項目按需載入
- 抽出
@rin/api、@rin/ui等共用套件,前後端共用型別與元件 - 部署、開發、資料庫任務統一收斂到 Rin CLI,並提供 GitHub Actions 的 Build / Deploy / Preview / Release / 文件站工作流程
- 同步官方原版改進:feed service 的 repository 分層、路由守衛、sitemap 服務、Modal 元件、圖片回退元件與目錄樹穩定化
文件
- 文件體系隨倉庫維護,中英文內容保持同步
- 文件中同時出現兩個倉庫時,統一先列 羊角快車二創版(本倉庫) 並標註 官方原版 openRin/Rin(上游)
升級說明
- 從官方原版升級到二創版時,部署指令碼會自動執行
server/sql/下的遷移指令碼,無需手動操作 - 郵件登入、電子郵件驗證碼與郵件自助友連屬於選用功能,需要額外設定
EMAIL_SEND_URLS/EMAIL_SEND_KEYS(見 環境變數說明) - TOTP、API Key、友連分組等功能無需額外環境變數,在後台頁面依需求啟用即可
官方原版歷史版本
v0.3.0 2025-02-04 更新
架構重構
- 輕量級框架:將 ElysiaJS 後端框架重構為輕量級自訂框架,專門針對 Cloudflare Workers 最佳化
- 移除了約 15 個重量級相依項目,核心框架程式碼 < 10KB
- 實作按需載入架構,每個請求只初始化必要的服務
- 最佳化的啟動時間與記憶體用量
新增功能
-
快取系統:實作支援資料庫和 S3 的彈性快取系統
- 新增
CACHE_STORAGE_MODE環境變數,支援database或s3模式 - 支援快取資料的自動序列化與反序列化
- 新增快取表用於高頻資料儲存
- 新增
-
HyperLogLog 統計:PV/UV 統計遷移到 HyperLogLog 演算法
- 使用 16384 個暫存器,誤差率約 0.81%
- 新增
visit_stats表,包含 pv 計數器與 hll_data - 文章統計查詢從 O(n) 最佳化到 O(1)
- 大幅減少高流量文章的查詢時間
-
錯誤處理系統:實作全面的錯誤處理機制
- 新增結構化錯誤類別(ValidationError, NotFoundError 等)
- 實作
GlobalErrorBoundary捕捉 React 算繪錯誤 - 新增
useErrorhooks 處理非同步操作與 API 呼叫 - 伺服器端中介軟體記錄錯誤並產生請求 ID
-
Cookie 驗證:從 Authorization Header 遷移到 Cookie-based 驗證
- 後端設定 HttpOnly、Secure、SameSite=lax 的 Cookie
- 前端移除 Authorization Header,改依賴瀏覽器 Cookie
- 強化 CSRF 防護
改進與最佳化
-
API 用戶端重構:以自訂 API 用戶端取代 Elysia/Eden
- 移除 @elysiajs/eden 與 rin-server 相依項目
- 建立型別安全的 API 用戶端
- 簡化 API 呼叫方式(從 treaty 模式改為直接方法呼叫)
- 破壞性變更:用戶端 API 介面變更,例如
client.feed.index.get()→client.feed.list()
-
OAuth 自訂實作:以自訂 OAuth2 實作取代 elysia-oauth2
- 通用 OAuth2 外掛架構,支援任何 OAuth2 供應商
- 內建 GitHub OAuth 供應商作為預設
- 透過 state 參數驗證提供 CSRF 防護
- TypeScript 全型別支援
-
相依注入重構:以原生機制取代 typedi
- 移除 typedi 相依注入容器
- 使用 Elysia 的 decorate() 與 derive() 進行相依注入
- 服務透過 store 存取相依項目而非 Container.get()
-
友連系統最佳化:更新 Friend 介面並調整相關 API 呼叫
- 改善型別安全性
修正
- 修正 uv 遷移到 hll 失敗的問題
- 修正 GitHub 回呼路由的 schema 驗證問題
- 修正查詢參數整數解析問題
- 修正 CORS 預檢請求處理問題
- 最佳化程式碼並精簡體積
資料庫遷移
- 新增快取表
cache(key, type, data, created_at, updated_at) - 新增造訪統計表
visit_stats(feed_id, pv, hll_data) - 資料庫遷移指令碼:
0006.sql
環境變數
新增環境變數:
v0.2.0 2024-06-07 更新
- 新增
S3_CACHE_FOLDER環境變數 - 環境變數加密清單與變數清單更新,僅保留必須加密的環境變數
- 加密變數現在可以透過 GitHub 直接設定
- GitHub 變數設定更新,新增必須透過 GitHub 設定的加密變數(S3 儲存,用於 SEO 索引保存)
GITHUB_CLIENT_ID與GITHUB_CLIENT_SECRET現在加上前綴RIN_(RIN_GITHUB_CLIENT_ID、RIN_GITHUB_CLIENT_SECRET),以解決 GitHub 變數不能以GITHUB_開頭的問題,使用 Cloudflare 面板設定的GITHUB_CLIENT_ID與GITHUB_CLIENT_SECRET不受影響
官方原版遷移指南
無特別說明時,一般的版本更新直接同步 fork 的倉庫即可
v0.2.0 遷移指南
同時新增以下加密環境變數(加密,新增到 Secrets):
以上環境變數在之前的版本中是透過 Cloudflare 面板設定的,現在需要遷移到 GitHub 中設定,新版本的部署 GitHub Action 會自動上傳到 Cloudflare,之後就不再需要在 Cloudflare 面板中設定這些環境變數了