Skip to content

省電力モードを試験的機能から外し設定に「バッテリー」画面を新設して移動#6409

Merged
TinyKitten merged 2 commits into
devfrom
feature/battery-settings
Jul 12, 2026
Merged

省電力モードを試験的機能から外し設定に「バッテリー」画面を新設して移動#6409
TinyKitten merged 2 commits into
devfrom
feature/battery-settings

Conversation

@TinyKitten

@TinyKitten TinyKitten commented Jul 12, 2026

Copy link
Copy Markdown
Member

概要

省電力測位モード(省電力モード)を試験的機能から外し、設定画面に新設した「バッテリー」項目へ移動しました。あわせて実験的機能扱いだった isDevApp ゲートを撤去し、全ユーザーが利用できる正式機能へ昇格しています。

変更の種類

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

変更内容

  • 設定画面(AppSettings)の「通知」の下に「バッテリー」項目を追加し、全ユーザーへ表示(アイコン battery-half / 遷移先 BatterySettings
  • 省電力測位モードのトグルを持つ新画面 BatterySettings を追加し、MainStack に登録
  • 試験的機能画面(ExperimentalSettings)から省電力トグル・ハンドラ・atom 参照を削除
  • powerSavingLocationEnabledAtomstore/atoms/experimental から store/atoms/battery へ移設(MMKV 同期での初期値確定ロジックはそのまま維持)
  • useStartBackgroundLocationUpdatesisDevApp ゲートを撤去し、手動 ON 時・端末の省電力モード中の測位プロファイル切り替えを本番でも有効化
  • 翻訳(ja/en)に batterySettings(バッテリー / Battery)を追加
  • 関連テストを更新(BatterySettings.test を追加、ExperimentalSettings.test から省電力ケースを削除、フックのテストを昇格後の挙動(低電力モードは全ビルドで有効)に合わせて再構成)

テスト

  • npm run lint が通ること
  • npm test が通ること
  • npm run typecheck が通ること

関連Issue

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

Summary by CodeRabbit

  • 新機能

    • 設定画面に「バッテリー」項目を追加し、省電力測位モードを切り替えられるようになりました。
    • バッテリー設定は端末に保存され、次回起動時にも維持されます。
    • 省電力測位は、設定の有効化または端末の低電力モードに応じて適用されます。
  • 変更

    • 省電力測位の設定を「実験的設定」から「バッテリー設定」へ移動しました。
    • 設定の保存に失敗した場合、変更を元に戻しエラーを通知します。

@TinyKitten TinyKitten self-assigned this Jul 12, 2026
@github-actions github-actions Bot added the react label Jul 12, 2026
@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

省電力測位設定を実験設定から専用のバッテリー設定画面へ移し、保存処理と初期状態管理を追加しました。位置情報更新処理は、設定または端末の低電力モードに応じて省電力オプションを選択します。

Changes

バッテリー設定画面と状態管理

Layer / File(s) Summary
バッテリー状態と設定画面
src/store/atoms/battery.ts, src/screens/BatterySettings.tsx, src/screens/BatterySettings.test.tsx
省電力測位設定用アトム、専用画面、ストレージ保存、失敗時のロールバックとアラート、および操作テストを追加しました。
設定項目と画面遷移
src/screens/AppSettings.tsx, src/stacks/MainStack.tsx, assets/translations/*.json
アプリ設定にバッテリー項目を追加し、BatterySettings画面への遷移、アイコン、英語・日本語の表示名を登録しました。
省電力測位の判定変更
src/hooks/useStartBackgroundLocationUpdates.ts, src/hooks/useStartBackgroundLocationUpdates.test.tsx
省電力測位をバッテリー設定または端末の低電力モードで有効化し、開発アプリ限定条件を削除しました。関連テストも更新しました。
実験設定からの移管
src/screens/ExperimentalSettings.tsx, src/screens/ExperimentalSettings.test.tsx, src/store/atoms/experimental.ts
省電力測位のアトム、UI、永続化処理、テストを実験設定から削除しました。

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AppSettingsScreen
  participant BatterySettingsScreen
  participant storage
  participant useStartBackgroundLocationUpdates
  AppSettingsScreen->>BatterySettingsScreen: BatterySettingsへ遷移
  BatterySettingsScreen->>storage: 省電力測位設定を保存
  useStartBackgroundLocationUpdates->>storage: 保存済み設定を状態として参照
  useStartBackgroundLocationUpdates->>useStartBackgroundLocationUpdates: 省電力用位置情報オプションを選択
Loading

Possibly related PRs

Poem

ぴょんとバッテリー画面へ跳ね、
省電力モードを軽やかに選ぶ。
保存に失敗しても元どおり、
うさぎの足取り、今日も正確。
にんじん色の設定、完成! 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed 変更内容の中心である省電力モード移動と「バッテリー」画面追加を端的に表しています。
Description check ✅ Passed 必要な見出しは揃っており、概要・変更内容・テストも具体的でテンプレート要件を満たしています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/battery-settings

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
src/screens/BatterySettings.tsx (1)

22-23: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

インポートパスの表記が混在しています。

同ファイル内で~/エイリアス(19-20行目)と相対パス(22-23行目)が混在しています。battery.tsなど他ファイルでは~/constants/storage~/lib/storageのようにエイリアス表記が使われているため、統一すると保守性が上がります。

♻️ 提案
-import { STORAGE_KEYS } from '../constants';
-import { storage } from '../lib/storage';
+import { STORAGE_KEYS } from '~/constants';
+import { storage } from '~/lib/storage';
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/screens/BatterySettings.tsx` around lines 22 - 23,
BatterySettings.tsxのSTORAGE_KEYSとstorageのインポートを、同ファイルで使用している~/エイリアス形式に統一してください。既存のインポート対象と動作は変更せず、相対パス表記のみエイリアス表記へ更新してください。
src/screens/BatterySettings.test.tsx (1)

24-35: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

renderWithStore ヘルパーの重複定義。

このヘルパーは src/screens/ExperimentalSettings.test.tsx にも同様の形(createStore + Provider + render)で存在しており、セットアップコードが重複しています。src/utils/test/ 配下へ共通化して両ファイルから再利用することを推奨します。

コーディングガイドライン「Reuse helper utilities from src/utils/test/ to avoid duplicate setup code in tests.」に基づくコメントです。

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/screens/BatterySettings.test.tsx` around lines 24 - 35,
共通セットアップが重複しているため、BatterySettings.test.tsx の renderWithStore と
ExperimentalSettings.test.tsx の同等ヘルパーを src/utils/test/
配下の共有ユーティリティへ移動してください。両テストからそのユーティリティを再利用し、createStore、Provider、render、および必要な
atom 初期化の既存動作を維持してください。

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/screens/BatterySettings.test.tsx`:
- Around line 24-35: 共通セットアップが重複しているため、BatterySettings.test.tsx の
renderWithStore と ExperimentalSettings.test.tsx の同等ヘルパーを src/utils/test/
配下の共有ユーティリティへ移動してください。両テストからそのユーティリティを再利用し、createStore、Provider、render、および必要な
atom 初期化の既存動作を維持してください。

In `@src/screens/BatterySettings.tsx`:
- Around line 22-23:
BatterySettings.tsxのSTORAGE_KEYSとstorageのインポートを、同ファイルで使用している~/エイリアス形式に統一してください。既存のインポート対象と動作は変更せず、相対パス表記のみエイリアス表記へ更新してください。

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6eefe8ee-acaa-4777-8a84-c61cf9380028

📥 Commits

Reviewing files that changed from the base of the PR and between 151d7f4 and 02b04ff.

📒 Files selected for processing (13)
  • assets/translations/en.json
  • assets/translations/ja.json
  • src/components/Permitted.tsx
  • src/hooks/useStartBackgroundLocationUpdates.test.tsx
  • src/hooks/useStartBackgroundLocationUpdates.ts
  • src/screens/AppSettings.tsx
  • src/screens/BatterySettings.test.tsx
  • src/screens/BatterySettings.tsx
  • src/screens/ExperimentalSettings.test.tsx
  • src/screens/ExperimentalSettings.tsx
  • src/stacks/MainStack.tsx
  • src/store/atoms/battery.ts
  • src/store/atoms/experimental.ts
💤 Files with no reviewable changes (2)
  • src/screens/ExperimentalSettings.tsx
  • src/store/atoms/experimental.ts

@TinyKitten TinyKitten merged commit 9b26e1d into dev Jul 12, 2026
6 checks passed
@TinyKitten TinyKitten deleted the feature/battery-settings branch July 12, 2026 15:11
@TinyKitten TinyKitten mentioned this pull request Jul 12, 2026
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant