Skip to content

v10.15.1🎉 - #6955

Merged
TinyKitten merged 64 commits into
masterfrom
release/v10.15.1
Sep 13, 2026
Merged

v10.15.1🎉#6955
TinyKitten merged 64 commits into
masterfrom
release/v10.15.1

Conversation

@TinyKitten

@TinyKitten TinyKitten commented Sep 11, 2026

Copy link
Copy Markdown
Member

概要

v10.15.1 の本番パッチリリース。dev に積まれた 62 コミット(Canary 版数バンプ 22 件、依存更新 2 件、devmaster 同期マージ 1 件を含む)に版数バンプ 1 コミットと dev 取り込みマージ 1 コミットを加えた計 64 コミットを master へ反映し、アプリ版数を 10.15.0 → 10.15.1 に更新する。

主軸は測位パイプラインの不具合修正(EMA スムージングの α の正規化、速度フィルタの基準変更、ETA による測位棄却とそのデッドロック解消、実走で悪化した到着圏緩和の廃止)と、TTS の誤読修正・Android のナンバリング表示補正・CI 製ビルドから Sentry へ例外が届かない問題の修正。利用者向けの新規機能追加は無く、既存挙動の修正が中心のためパッチ扱いとする。

変更の種類

  • バグ修正
  • 新機能
  • リファクタリング
  • ドキュメント
  • CI/CD
  • その他

変更内容

試験的機能(ExperimentalSettings)限定の変更は本番の挙動に影響しないため以下には記載していない(例: #6922 のリモート TTS 強制切替)。

不具合修正(測位)

不具合修正(TTS・表示)

UI・文言

iOS: VOICEVOX 読み上げ(Remote Config 未配信のため既定では無効)

実行経路は isSupported()src/lib/voicevox/assets.ts)が ①ネイティブモジュール VoicevoxTTSModule の存在 ②Remote Config voicevox_tts_enabled_ios === truevoicevox_tts_manifest_url_ios !== null3 条件すべてを要求する。1 つでも欠けると phase は unsupported になり、設定画面のパネルも約 160MB のダウンロード同意ダイアログも出ず、読み上げは従来どおり「リモート TTS → 端末内蔵 TTS」のまま変わらない。voicevox_tts_enabled_ios のフォールバック値は falsevoicevox_tts_manifest_url_ios は未設定なので、このリリース時点では本番で無効である。

ただしフレームワークは ProdTrainLCD にもリンクされるため iOS バイナリサイズは増加する(App Clip には含めない)。

配信資産(Cloudflare R2)は本番・staging とも公開済み。 有効化に残っている作業は Remote Config のキー設定(TrainLCD/functions 側の CONFIG_KV)だけで、このリリースのブロッカーではない。

配信先 ホスト manifest.json version 資産
本番 assets.trainlcd.app 200 2026-09-08 10 ファイル / 計 157.8MB、全件 200 で到達可
staging assets-stg.trainlcd.app 200 2026-09-08 同一

設計書が本番昇格前の照合を求めている 3 点(version / files[].path / files[].sha256)は本番と staging で一致している。配信済みの 6.vvm はスタイル ID 29 / 30 / 31 を含み、コード既定値 VOICEVOX_DEFAULT_STYLE_ID = 30src/constants/voicevox.ts)と整合するため、voicevox_tts_style_id_ios は未設定のままでも合成できる。有効化するときは canary(dev 側 Remote Config → assets-stg)で確かめてから production 側を立てる。

プラットフォーム・CI/CD

開発者向けツール(アプリ挙動に影響なし)

依存更新

ドキュメント

同期マージ

版数更新

v10.15.1 をリリース: npm run version:bump 10.15.1 による版数更新。

  • package.json / package-lock.json / app.config.ts: 10.15.0 → 10.15.1
  • iOS: CURRENT_PROJECT_VERSION 2906 → 2907、MARKETING_VERSION 10.15.1
  • Android :app: versionCode 100000753 → 100000755
  • Wear OS :wearable: versionCode 100000754 → 100000756(:app + 1 を維持)

dev 取り込みマージ

devの最新をv10.15.1リリースブランチへ取り込み: リリースブランチ作成後に dev へ入った 4 コミット(#6956 / #6957 / #6959 / #6960)を取り込むマージコミット。

dev 側の Canary 版数バンプ (#6959) と本 PR の版数バンプが同じ数値(buildNumber 2907 / :app 100000755 / :wearable 100000756)へ到達していたため、数値の競合は無い。衝突したのは android/app/build.gradleandroid/wearable/build.gradle.ktsversionName のみで、リリース側の 10.15.1 を採用した(dev 側は 10.15.0 のまま)。マージ後の版数は以下で一貫している。

  • app.config.ts: version 10.15.1 / buildNumber 2907 / versionCode 100000755
  • package.json: 10.15.1
  • iOS project.pbxproj: MARKETING_VERSION 10.15.1(4 箇所)/ CURRENT_PROJECT_VERSION 2907(18 箇所、他の値なし)
  • Android: :app 100000755 / :wearable 100000756、全フレーバーの versionName が 10.15.1

テスト

dev 取り込み後のリリースブランチ上でコード品質チェックを再実行し、いずれも成功(自動修正なしの check-only)。実行環境は Node 24.21.0 / npm 11.19.0(.nvmrc の 24 系に一致)。依存は npm cipackage-lock.json どおりに導入(再ロックなし)。

  • npm run lint: 747 ファイル、指摘なし
  • npm run typecheck: エラーなし
  • npm test: 279 suites / 3040 tests すべて成功

なお、含まれる各変更は dev へマージされる時点でレビューと CI を通過済み。

リグレッションリスクと緩和

関連Issue

スクリーンショット(任意)

未添付: dev へマージ済みの変更を master へ集約するリリース PR で、画面差分は各元 PR(#6943 / #6947 / #6875 / #6926 / #6956 / #6957 など)に添付済みのため。この PR 固有の差分は版数バンプと dev 取り込みマージのみで画面変化はありません。

🤖 Generated with Claude Code

https://claude.ai/code/session_01Q7NJSGcnmF9rF1GRe3gcLL

TinyKitten and others added 30 commits September 5, 2026 23:24
Co-authored-by: TinyKitten <32848922+TinyKitten@users.noreply.github.com>
* 全ナンバリングアイコンでAndroidのグリフ上下ズレを補正

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NcNhShP3R1kZg8MNrvu7kR

* 縮小版のナンバリングでも実際の文字サイズから補正量を求める

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NcNhShP3R1kZg8MNrvu7kR

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* iOS本体アプリにVOICEVOX COREの合成モジュールとフレームワーク取得スクリプトを追加

- ios/Modules/VoicevoxTTS: 辞書・VVM を受け取り日本語を WAV へ合成する RN ネイティブモジュール (Swift + ObjC ブリッジ)
- voicevox_core 0.17.0 / voicevox_onnxruntime 1.23.2 の xcframework を scripts/fetch-voicevox-frameworks.mjs が SHA-256 検証付きで取得し ios/Frameworks へ展開する (展開物は gitignore)
- Xcode プロジェクトは ProdTrainLCD / CanaryTrainLCD にだけソースとフレームワークを追加し、App Clip (非圧縮 15MB 上限) には含めない
- npm run ios と iOS ビルドワークフローの pod install 前に取得ステップを追加

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* iOSでリモートTTSが使えない回の日本語をVOICEVOXで読み上げるフォールバックエンジンを追加

- Remote Config に voicevox_tts_enabled_ios / voicevox_tts_manifest_url_ios / voicevox_tts_style_id_ios を追加 (未配信時は無効)
- src/lib/voicevox: マニフェスト (zod) と辞書・VVM のダウンロード・SHA-256 検証・バージョン管理
- useVoicevoxSpeechEngine: 日本語を VOICEVOX で合成して expo-audio で再生し、英語は端末内蔵 TTS へ委譲する
- useTTS の経路を リモート → VOICEVOX → 端末内蔵 TTS の順にし、使えない条件では従来どおり端末内蔵 TTS へ倒す
- scripts/build-voicevox-manifest.mjs: 配信用マニフェストの生成スクリプト

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* VOICEVOX:No.7のクレジットをライセンス画面へ追加しオンデバイスTTSの設計書を整備

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* 自動アナウンス有効化時にオフライン用日本語音声のダウンロードを尋ね設定画面に進捗と操作を表示

- VOICEVOX 資産の取得はユーザーの同意 (MMKV VOICEVOX_DOWNLOAD_CONSENTED) を得てから始め、同意後は中断・更新分を自動で再開する
- ダウンロード進捗をファイル横断で合算して購読可能にし (getVoicevoxAssetsStatus / useVoicevoxAssetsStatus)、キャンセルと削除を追加
- TTS 設定画面: 有効化時の同意ダイアログと、未取得 / 取得中 (進捗バー) / 取得済み / 失敗の各状態を出すパネル

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* VOICEVOXネイティブモジュールの参照がiOS限定であることを検証するテストを追加

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* CodeRabbitの指摘に対応しApp Clipでのクレジット非表示・日本語無効時の同意省略・キャンセル直後の再要求などを修正

- VoicevoxTTSModule: deinit が合成キュー上で走った場合の queue.sync デッドロックを回避し、VVM オープン失敗時に合成器を解放する
- fetch-voicevox-frameworks: バージョンマーカーだけでなく Info.plist の存在も確認してから取得を省略する
- assets: キャンセル直後に requestVoicevoxAssetsDownload が呼ばれても同意を記録し、中断が片付いてから取り直す
- Licenses: App Clip では iosOnly のクレジットを出さない (テスト追加)
- TTSSettings: 日本語を読まない設定では同意ダイアログを出さない (テスト追加)
- manifest.test: 相対パス検証を他の検証と切り分ける
- docs: シェルで解釈されない URL プレースホルダーに変更し、3 エンジンの選択順を追記
- 新規の公開関数へ JSDoc を付与

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* リモートTTS設計書のRemote Config節を3エンジン構成の説明に揃える

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* VOICEVOX資産の配信手順をリポジトリ外の作業ディレクトリで行う形に直し配信先の構成を追記

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* VOICEVOX資産をR2へ配信する公開スクリプトを追加しスクリプト群をBiomeで整形

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* VOICEVOX資産の取得手順を失敗時に停止する形にしマニフェストURLのhttps必須を明記

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* VOICEVOX資産の配信スクリプトをwrangler不要のCloudflare API直接呼び出しにしトークンを環境変数に置かずに済むようにする

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

* VOICEVOX資産の配信で公開済みversionを別内容で上書きしないよう検査を追加

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XhiZDbeC767daH6qcLpArb

---------

Co-authored-by: Claude <noreply@anthropic.com>
* GPXをAndroidのテストプロバイダへ流して実機の測位パイプラインを検証するスクリプトとスキルを追加

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfFqbxEsz7sm3zdCqmmP5B

* GPX再生スクリプトの引数検証とtrkpt対応と中断時の後始末競合を修正

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfFqbxEsz7sm3zdCqmmP5B

* GPX再生でGPXの長さを超える--startをエラーにして先頭再生への暗黙のフォールバックをやめる

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfFqbxEsz7sm3zdCqmmP5B

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
TinyKitten and others added 15 commits September 11, 2026 08:04
* VOICEVOX資産のstaging配信先の手順を設計書に追記

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tVYs6Yu7jchkzxe6hAG2t

* staging配信先の説明で資産差し替え時に起きることを具体的に書く

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tVYs6Yu7jchkzxe6hAG2t

* staging配信先の説明で反映範囲・資産の同一性判定・トークンの扱いを明確にする

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tVYs6Yu7jchkzxe6hAG2t

* staging配信先の説明にproduction側のスタイルID更新を追記

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tVYs6Yu7jchkzxe6hAG2t

* staging配信先の説明にR2とRemote Configの非原子性と移行手順を追記

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tVYs6Yu7jchkzxe6hAG2t

* staging配信先の説明でマニフェスト取得契機とversion重複検査の範囲を正す

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tVYs6Yu7jchkzxe6hAG2t

* staging配信先の説明でマニフェスト取得の2経路と切り戻し時のスタイルID復帰を明記

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tVYs6Yu7jchkzxe6hAG2t

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* 設定画面とフィードバック送信前によくある質問への導線を追加して非対応端末の案内をアプリ内判定に頼らない形にする

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D5B5BXLyHgiRiH1ojd87dP

* フィードバックモーダルのよくある質問への導線を入力欄より前へ移して長文入力後に知らせる形を避ける

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D5B5BXLyHgiRiH1ojd87dP

* フィードバックモーダルのよくある質問への導線をFigmaの確定版に合わせて注意書きの直前の1行リンクにする

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D5B5BXLyHgiRiH1ojd87dP

* よくある質問を開けない場合のテストで送信操作まで通して送信フローを妨げないことを実際に検証する

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D5B5BXLyHgiRiH1ojd87dP

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: TinyKitten <32848922+TinyKitten@users.noreply.github.com>
Co-authored-by: TinyKitten <32848922+TinyKitten@users.noreply.github.com>
* エージェント向けドキュメントのバージョン管理手順をjjからgitへ戻す

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pm4Bow3JtWJvmHYF78yL9k

* レビュー指摘に従い古いremote-tracking参照での比較とHEAD解決の記述を修正

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pm4Bow3JtWJvmHYF78yL9k

* レビュー指摘に従い参照の鮮度確認と削除前のローカル枝確認を追記

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pm4Bow3JtWJvmHYF78yL9k

* レビュー指摘に従い未pushのheadをpushしてから比較する分岐を追記

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pm4Bow3JtWJvmHYF78yL9k

* レビュー指摘に従いリモート参照の判定と枝切り替え前の確認を全スキルで統一

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pm4Bow3JtWJvmHYF78yL9k

* レビュー指摘に従い未pushでのfetch回避と終了コード退避と衝突検証の順序を修正

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pm4Bow3JtWJvmHYF78yL9k

* レビュー指摘に従い枝の存在判定と削除時のSHA固定と版数抽出の取りこぼしを修正

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pm4Bow3JtWJvmHYF78yL9k

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0153nzW9kBfL71DcfeQR3beo
@TinyKitten TinyKitten self-assigned this Sep 11, 2026
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: 66a6c780-ab9f-4a1b-a3d5-50d2c31a9b2f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

抽出したバージョン 10.15.1 は現在のバージョンと同一です。バージョンを上げる必要がある場合はブランチ名を変更してください。

@TinyKitten
TinyKitten merged commit 7ccd30d into master Sep 13, 2026
7 checks passed
@TinyKitten
TinyKitten deleted the release/v10.15.1 branch September 13, 2026 08:49
@claude claude Bot mentioned this pull request Sep 13, 2026
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants