Skip to content

OpenFace v0.3.0リリースヘッダー

OpenFace v0.3.0

OpenFace v0.3.0は、リポジトリを探してから実際のアプリが見えるまでの流れを分かりやすくしました。v0.2.0以降の、指標ベースのカタログ並び替え、即時の遷移フィードバック、段階的なSpace readiness、portal/Forgejo共通ナビゲーション、テーマ対応コード表示、統一ブランドをまとめます。

ハイライト

  • 実際の指標で主要カタログを並び替え: 11種類のカタログで作成日、更新日、いいね数、閲覧数の昇順/降順を選べます。ページ分割前に一致集合全体を並び替え、条件をURLへ保持します。
  • すぐ分かるページ遷移: client-side遷移にprogress、pressed状態、route skeleton、有限timeout、retryを追加しました。p50/p95 telemetryはrepository pathではなくroute classだけを記録します。
  • 体感を速くしたSpace起動: repository shellを先に表示し、runtime状態を単一sourceから取得し、/run/のready確認後にiframeを表示します。公開CPU Spaceは未ログインでも起動でき、管理操作は保護されます。
  • 一つのナビゲーションと識別: portalとForgejoがversion付きnavigation contractを共有し、障害時はnative fallbackへ戻ります。canonicalな猫のmarkをbrowser、PWA、maskable、monochrome、auth、error、docsへ統一しました。
  • 全テーマで読みやすいコード: server-side highlight.jsとtheme tokenを使い、sanitize済みMarkdown機能を保ちながら未知のlanguageも安全にfallbackします。

性能の根拠

Space詳細はbaseline/candidateをcoldとwarmで各10回、ローカル計測しました。candidateのp50は約358~359 msから67 msへ改善(約81%、約5.3倍)しました。一方、約360 msの外れ値が残るためp95はbaselineに近いままです。遷移feedbackはp95で28 ms以内でした。これはPull Request #106の再現可能なローカル結果であり、あらゆるnetworkやhardwareでの保証ではありません。

条件baseline p50 / p95candidate p50 / p95
cold Space詳細358 / 372 ms67 / 358 ms
warm Space詳細359 / 368 ms67 / 368 ms

運用への影響

  • repository/database migrationは不要です。
  • KNOWLEDGE_CACHE_TTL_SECONDSは公開knowledge metadata cacheを制御し、既定値は60秒です。private/authenticated repository contentは対象外です。
  • OPENFACE_PERFORMANCE_LOG=1はAPI、database、Forgejo、Markdownの調査時だけ有効にしてください。
  • GET /api/performance/navigationは有限のp50/p95集計を返します。ingestionはsame-origin制約とrate limitを持ち、任意path/metadataを受け付けません。
  • Space readinessは20秒で打ち切り、古いiframeや一時JSONを残さずretryを表示します。

ドキュメント

v0.3.0解説カタログのメトリクス並び替えページ遷移のパフォーマンスDocker Spacesを参照してください。

検証

frontendの型/automation/production build、日英docs validationとVitePress build、repository Python tests、Docker Compose validation、SVG source/rendered output validation、GitHub Actions、公開docs URL、release QA inventoryでrelease candidateを確認します。

Released under the MIT License. Third-party components retain their own licenses.