feat(settings): dynamic の表示時間に 5 段階の簡単設定を用意する - #46
Merged
Conversation
dynamic の表示時間は 4 つの係数で決まる。 表示時間を少し変えたいだけの利用者に、読字速度とクランプ範囲を個別に決めさせるのは重い。 既定の通知設定タブへ簡単設定の選択肢を足し、最短から最長までの 5 段階を選べるようにする。 段階を選ぶと 4 つの係数がまとめて入り、係数の入力欄は編集できなくなる。 カスタムに戻すと入力欄が有効になり、今までどおり係数ごとに編集できる。 最短はテスト通知が fixed の既定と同じ 1 秒になるところを起点にしてある。 「テスト通知を送る」で今の見え方と比べながら、そこから段階を上げて決められる。 テスト通知の文字数では min まで持ち上がるため、この 1 秒は ja と en のどちらでも変わらない。 辞書の文言を伸ばして起点がずれたときに気付けるよう、両ロケールを spec で確かめる。 設定ファイルへ書くのは段階の名前ではなく係数の実値であり、スキーマは変えない。 名前を持たせると、rules の係数ごとの上書きを解決する経路が名前と実値の 2 通りになる。 画面は開いたときに係数から段階を引き直し、どれとも一致しないものをカスタムとして扱う。 アプリ別ルールタブの上書き行は対象外とする。 あちらは係数単位の部分上書きであり、4 つ組であるプリセットとの対応が取れない。 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bzwo9brhbZyAyjVuzEj1mb
各段階が入れる係数と、最短が fixed の既定に合わせてあることを書く。 設定ファイルには段階の名前ではなく係数の実値が入るため、 手で書いた係数がどの段階とも一致しないときにカスタムとして表示されることも添える。 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bzwo9brhbZyAyjVuzEj1mb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #45
背景
dynamic モードの表示時間は 4 つの係数(
base、reading_speed、min、max)で決まる。表示時間を少し変えたいだけの利用者に、読字速度とクランプ範囲を個別に決めさせるのは重い。
変更
既定の通知設定タブへ「dynamic: 簡単設定」を足し、最短から最長までの 5 段階を選べるようにした。
timeout_modeがfixedのときは、係数欄と同じく簡単設定も無効になる。各段階が入れる係数は次のとおりである。
base0.0、reading_speed100.0、min1.0、max3.0base1.0、reading_speed40.0、min2.0、max8.0base2.0、reading_speed12.0、min3.0、max15.0base3.0、reading_speed9.0、min5.0、max20.0base4.0、reading_speed6.0、min8.0、max30.0標準は
Defaultsの既定値と同じにしてある。係数を触っていない利用者に、選んだ覚えのないプリセットを表示しないためである。
最短を fixed の既定に合わせたこと
最短は、テスト通知が
fixedの既定と同じ 1 秒になるところを起点にしてある。「テスト通知を送る」で今の見え方と比べながら、そこから段階を上げて決められる。
テスト通知の文字数(ja で 35 文字、en で 78 文字)では
base + 文字数 / reading_speedが 1.0 を下回り、minでそこまで持ち上がる。そのため、この 1 秒は ja と en のどちらでも変わらない。
最短の
reading_speedは読字速度ではなく、1 秒延ばすのに要る文字数である。視界を塞がないことを優先する段階なので、実際に読み切れる速度より大きく取ってある。
辞書の文言を伸ばすと文字数が増え、
minから浮いて 1 秒でなくなる。起点が黙ってずれないよう、両ロケールのテスト通知を
MessageBuilderに通して 1 秒になることを spec で確かめる。設定ファイルのスキーマは変えていない
書かれるのは段階の名前ではなく係数の実値である。
名前を持たせると、
rulesの係数ごとの上書きを解決する経路が名前と実値の 2 通りになり、どちらが勝つかを決めなければならなくなる。アプリ別ルールタブの上書き行は簡単設定の対象外とした。
あちらは係数単位の部分上書きであり、4 つ組であるプリセットとの対応が取れない。
確かめたこと
crystal tool format --check src speccrystal spec(248 examples, 0 failures)crystal build --cross-compile --target x86_64-pc-windows-msvc src/main.cr(設定ウィンドウの型検査)追加した spec は次のとおりである。
Defaultsの既定値と一致する実機の画面の動きは Windows でしか確かめられないため、未確認である。
🤖 Generated with Claude Code
https://claude.ai/code/session_01Bzwo9brhbZyAyjVuzEj1mb
Generated by Claude Code