変更履歴
バージョン管理: 羊角快車二次創作版は独自のラインで標準的なセマンティックバージョニングに従い、v1.0.0 から始まります。リリースタグは
vX.Y.Z形式で、プレリリースには-betaや-rc.1などのサフィックスを付けます(例:v1.2.0-beta.1)。MAJORは互換性のない変更、MINORは後方互換性のある機能、PATCHは修正と小さな変更を表します。すべてのリリースはこの変更履歴に記録されます。告知ページは変更の規模と必要性に応じて維持されます。大きな変更には新しいページまたは更新されたページが作成され、1つのラインの複数リリースが同じページを共有できます。項目が公式アップストリーム openRin/Rin のバージョンと本プロジェクトのバージョンの両方に言及する場合、本プロジェクトのバージョンは区別のためyjvX.Y.Zと表記します。最新リリースは v1.1.2 です。以下のv0.3.0/v0.2.0の項目は公式アップストリームの履歴です。
v1.1.2 - 2026年10月26日
REST API キーと MCP キーを2つの別タイプに分離します。
このリリースの内容
- キータイプ:
api_keysテーブルにkey_typeカラムを追加(1 = REST API キー、2 = MCP キー)。設定ページでは REST API と MCP の別タブで両方を管理します - エンドポイントの分離: REST API キーは
/api/key/*のみ、MCP キーは/mcpのみを呼び出し、タイプの不一致は403を返します - スコープの境界:
content.readは MCP キーのみ利用可能です
ドキュメント
- API ガイドに両方のキータイプを記載し、マイグレーション
0021.sqlが既存キーを自動分類します - デプロイガイドと README が単一 Worker アーキテクチャを説明するようになりました。クライアントアセットは Worker とともに配布されるため、Cloudflare Pages プロジェクトは不要です
アップグレードに関する注意
- マイグレーションは自動実行されます。
content.readを持つ既存キーは MCP キーになり、残りは REST API キーになります
v1.1.1 - 2026年10月26日
MCP サーバーを追加し、カスタムドメイン経由の拒否されたアクセスを修正します。
このリリースの内容
- MCP サーバー: 新しい
/mcpエンドポイントが記事、モーメント、友だちリンク、サイト設定を MCP ツールとして公開します。API キーで認証し、スコープでフィルタリングされ、新しいcontent.readスコープに支えられています - ホスト名許可リスト: Host と Origin の検証が DNS リバインディングをブロックします。カスタムドメインは
MCP_ALLOWED_HOSTSを通じて許可され、スキーム/ポートのエントリ、ワイルドカード、*を含みます
修正
- デプロイコマンドが
FRONTEND_URLとMCP_ALLOWED_HOSTSをエクスポートするようになり、拒否されたホスト名はレスポンス本文に設定のヒントが表示されます - ホスト名の検証が認証前に実行されるため、拒否されたホストは
Invalid Hostとともに403を返します
ドキュメント
- v1.1 リリース告知 を追加し、API ガイドにカスタムドメインのトラブルシューティング(421 と 403)を記載しました
アップグレードに関する注意
- カスタムドメインのサイトは
MCP_ALLOWED_HOSTSまたはFRONTEND_URLを設定して再デプロイする必要があります。このリリースにはデータベースマイグレーションはありません
v1.1.0 - 2026年10月24日
二次創作版独自のバージョンラインの最初の機能リリースです。友だちリンクの二重検証方法を提供し、中国語と英語のドキュメントを同期させます。
このリリースの内容
- 友だちリンク検証が DNS TXT と HTML ファイルアップロードをサポートするようになりました
- JSON ペイロードが受け入れられた後、状態機械は
awaiting_method_choiceに入り、申請者に方法の選択を求めます:DNS TXT レコードの場合は1(または一/方案一/方法一)、HTML ファイルの場合は2(または二/方案二/方法二)と返信します - DNS:手順メールにホスト
_jiaofriend、タイプTXT、値 = 検証コードが記載されます。検証では Cloudflare DNS-over-HTTPS 経由で_jiaofriend.<visitor-domain>の 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 バンドル下での受信メール解析を修正
ドキュメント
- 現在の実装に合わせてデプロイガイドを書き直しました:リポジトリの順序、サイト変数、ワークフロー一覧、マイグレーションスクリプトのパス、デプロイ URL の注記
- ドキュメントディレクトリの再構成:
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 キー:管理者は設定ページからスコープ付き権限でキーを作成・失効できます
- friends-sitemap.xml:承認された友だちリンクを名前と説明付きで一覧表示します
- MailPort マルチ送信者サポート:複数の送信者エンドポイント間での順序付きポーリングとレガシーフォールバック
- AI 機能:AI 要約、AI 強化検索、カスタムモデル、並べ替え可能なフォールバックモデルキュー
- コンテンツと読書体験:複数のコメントシステム、Webhook 通知、RSS、動的な robots.txt を備えたサイトマップ、友だちリンクの可用性の定期チェック
修正
- TOTP を有効にした後、パスワードなしのアカウントがログインできなくなる問題を修正
- API キーエンドポイントで「not found」テキストが重複し、権限スコープが空になる問題を修正
- デプロイシークレットを一括アップロードする際の 10214 レース障害を修正
アーキテクチャとデプロイ
- バックエンドランタイムを Cloudflare Workers 向けに最適化された軽量フレームワークに移行し、ルートと依存関係をオンデマンドで読み込み
- 共有型とコンポーネントのために
@rin/apiや@rin/uiなどの共有パッケージを抽出 - デプロイ、開発、データベースのタスクを Rin CLI の下に統合し、GitHub Actions で Build / Deploy / Preview / Release / ドキュメントサイトのワークフローを提供
- アップストリームの改善を同期:フィードサービスリポジトリ層、ルートガード、サイトマップサービス、Modal コンポーネント、画像フォールバックコンポーネント、安定した目次レンダリング
ドキュメント
- ドキュメントセットはリポジトリとともに配布され、中国語と英語を同期
- 両方のリポジトリが登場する場合、二次創作版(本リポジトリ) が最初にラベル付きで記載され、その後に 公式アップストリーム openRin/Rin が続きます
アップグレードに関する注意
- 公式アップストリームから本エディションにアップグレードする場合、デプロイスクリプトが
server/sql/内のマイグレーションを自動的に適用します。手動の手順は不要です - メールログイン、メール認証コード、セルフサービス友だちリンクはオプションであり、
EMAIL_SEND_URLS/EMAIL_SEND_KEYSが必要です(環境変数 を参照) - TOTP、API キー、友だちリンクグループには追加の環境変数は不要です。必要に応じて管理ページから有効化してください
公式アップストリームの履歴
v0.3.0 - 2025年2月4日
アーキテクチャのリファクタリング
- 軽量フレームワーク: 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 など)を追加
- React レンダリングエラーを捕捉する
GlobalErrorBoundaryを実装 - 非同期操作と API 呼び出しを処理する
useErrorフックを追加 - エラーをログに記録しリクエスト ID を生成するサーバー側ミドルウェア
-
Cookie 認証: Authorization ヘッダーから Cookie ベースの認証に移行
- バックエンドが HttpOnly、Secure、SameSite=lax の Cookie を設定
- フロントエンドが Authorization ヘッダーを削除し、ブラウザの Cookie に依存
- CSRF 保護を強化
改善と最適化
-
API クライアントのリファクタリング: Elysia/Eden をカスタム API クライアントに置き換え
- @elysiajs/eden と rin-server の依存関係を削除
- 型安全な API クライアントを作成
- API 呼び出しパターンを簡素化(treaty パターンから直接メソッド呼び出しへ)
- 破壊的変更: クライアント API インターフェースが変更されました。例:
client.feed.index.get()→client.feed.list()
-
カスタム OAuth 実装: elysia-oauth2 をカスタム OAuth2 実装に置き換え
- 任意の OAuth2 プロバイダーをサポートする汎用 OAuth2 プラグインアーキテクチャ
- デフォルトで GitHub OAuth プロバイダーを内蔵
- state パラメータ検証による CSRF 保護
- 完全な TypeScript 型サポート
-
依存性注入のリファクタリング: typedi をネイティブメカニズムに置き換え
- typedi 依存性注入コンテナを削除
- 依存性注入に Elysia の decorate() と derive() を使用
- サービスは Container.get() の代わりに store 経由で依存関係にアクセス
-
友だちリンクの最適化: Friend インターフェースを更新し、関連する API 呼び出しを調整
- 型安全性を向上
バグ修正
- UV の HLL への移行失敗を修正
- GitHub コールバックルートのスキーマ検証問題を修正
- クエリパラメータの整数解析を修正
- 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 経由で設定する必要がある暗号化変数を追加(SEO インデックス保存用の S3 ストレージ)
GITHUB_CLIENT_IDとGITHUB_CLIENT_SECRETにRIN_プレフィックスを付けました(RIN_GITHUB_CLIENT_ID、RIN_GITHUB_CLIENT_SECRET)。GitHub 変数がGITHUB_で始められない問題を解決するためです。Cloudflare パネル経由で設定された変数(GITHUB_CLIENT_IDとGITHUB_CLIENT_SECRET)は影響を受けません。
公式アップストリーム移行ガイド
特別な指示のない通常のバージョン更新では、フォークしたリポジトリを同期するだけです。
v0.2.0 移行ガイド
- SEO 最適化の導入により、GitHub で S3 ストレージ環境変数を設定する必要があります。そのため、GitHub で以下の環境変数を追加設定する必要があります(平文、Variables に追加):
さらに、以下の暗号化環境変数を追加します(暗号化、Secrets に追加):
これらの環境変数は以前は Cloudflare パネル経由で設定されていました。現在は GitHub に移行する必要があります。新しいバージョンのデプロイ GitHub Action が自動的に Cloudflare にアップロードするため、Cloudflare パネルでこれらの環境変数を設定する必要はなくなりました。