By Roxチーム
Rox v2026.7.0-rc リリース
Rox v2026.7.0-rc をプレリリースしました(rc.1 に続き、デッキのモバイル操作を改善した rc.2 まで進めています)。今回の目玉は 時系列チャート統計サブシステム で、あわせてデッキの操作性改善、そしてセルフホスター向けのコンテナ/Kubernetes 対応を行っています。
プレリリース(RC)です。機能はひととおり揃ってテスト済みですが、本番投入前にステージングでの確認をおすすめします。
時系列チャート統計サブシステム(TimescaleDB 任意対応)
これまで Rox の統計は「その場で COUNT(*) する」リアルタイム集計だけで、履歴が残りませんでした。そのため「日別の投稿数推移」「ユーザーの増加」「フェデレーション活動の時系列」といった、Misskey のチャートに相当するものがありませんでした。
v2026.7.0 では、定期的にメトリクスのスナップショットを記録し、時系列として返す仕組みを追加しました。
- Misskey 互換のエンドポイント:
GET /api/charts/{users,notes,active-users,federation,drive}(span=hour|day、limit、until) - Admin ダッシュボード: サマリーカードと、依存ライブラリを足さない自前の軽量 SVG グラフで時系列を表示
- 収集ジョブ: 1 時間ごとに各メトリクスをスナップショット
有効化は選択式(既定はオフ)
「軽くてどこでも動く」という Rox の方針に合わせ、この機能は オプトイン です。
# 既定はオフ。オンにすると収集とチャート API が有効化されます
CHARTS_ENABLED=true
# auto: timescaledb 拡張があれば自動採用、なければ素の PostgreSQL にフォールバック
CHARTS_BACKEND=auto
CHARTS_ENABLED=false(既定)のときは、収集ジョブも動かず API も無効で、従来と完全に同じ挙動です。
TimescaleDB は「4 つ目の DB」ではない
ポイントは、TimescaleDB を新しい DB_TYPE として足していないことです。TimescaleDB は PostgreSQL 拡張なので、DB_TYPE=postgres のまま動きます。
本サブシステムは chart_snapshots という 1 つの「長形式」テーブルを両バックエンド共通の読み取りモデルとして使い、TimescaleDB が検出された場合のみ、そのテーブルを hypertable 化し、圧縮(30 日)・保持(400 日)ポリシーを自動適用します。CHARTS_BACKEND=auto なら、拡張の有無を起動時に検出して自動で切り替わります。小規模インスタンスは素の PostgreSQL のまま、大規模運用者は TimescaleDB で効率化、という住み分けができます。
Docker Compose には任意の timescaledb プロファイルも用意しました。
デッキの操作性を改善
表示時に一瞬右へスライドする不具合を修正(rc.1)
デッキ(マルチカラム表示)を開いた瞬間に、内容が一瞬右へスライドして戻る現象がありました。横スクロールコンテナの scroll-smooth により、マウント時のスクロール位置補正がアニメーション化されていたのが原因です。横スクロールを即時に変更し、解消しました。
モバイルの横スワイプをネイティブ scroll-snap カルーセルへ刷新(rc.2)
モバイルのデッキは、これまで現在のカラム 1 枚を指でドラッグして指を離すと切り替わる、自前のタッチ処理でした。隣のカラムが指に追従して出てこないため、やや不自然な切り替わりになっていました。
rc.2 では、これを ブラウザネイティブの CSS scroll-snap カルーセルへ置き換えました。指追従・慣性・スナップ、そして「カラム内の縦スクロール」と「カラム間の横スワイプ」の軸ロックまで、すべてブラウザに任せています。横方向のオーバースクロールでブラウザの「戻る/進む」が誤発火しないようにもしています。結果として、ネイティブアプリのような滑らかな操作感になりました。
セルフホスター向け: コンテナイメージと Kubernetes 対応
今回から、バックエンド/フロントエンドの コンテナイメージを GHCR に公開しています(ghcr.io/love-rox/rox-backend, ghcr.io/love-rox/rox-frontend)。さらに、すぐ使える K3S / Kubernetes マニフェスト一式を deploy/k8s/rox/ に同梱しました(namespace、クラスタ内 TimescaleDB、Dragonfly、nginx、マイグレーション用 init コンテナ付きバックエンド)。
実際に私たち自身の公式インスタンス(rox.love-rox.cc)も、この構成で ベアメタルから K3S + クラスタ内 TimescaleDB へ移行しました。新しいバージョンが出たら自動で更新が流れる運用にしています。これらのデプロイ追加は任意で、従来のインストール方法には影響しません。
アップグレードの注意
- DB マイグレーション 0014 を含みます(
rc.1)。chart_snapshotsテーブルの追加です。更新時はbun run db:migrateを実行してください。rc.1 → rc.2では新規マイグレーションはありません。 - 破壊的変更はありません。チャート機能は既定でオフです。
git pull origin main
bun install --frozen-lockfile
bun run db:migrate # マイグレーション 0014 を適用
bun run build
おわりに
RC 段階なので、チャートまわりや新しいモバイルスワイプの感触など、フィードバックを歓迎します。安定版 v2026.7.0 に向けて仕上げていきます。
ご質問やフィードバックは GitHub Issues にてお待ちしております。
愛がロックする。Rox。 🚀