Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refine preferences #15597

Merged
merged 215 commits into from
Mar 9, 2025
Merged

Refine preferences #15597

merged 215 commits into from
Mar 9, 2025

Conversation

syuilo
Copy link
Member

@syuilo syuilo commented Mar 4, 2025

What

Why

  • defaultStoreとは別の簡易pizzax的なもので管理する
    • 今まではごちゃ混ぜだった
  • アプリケーションの「状態」と「設定」が明確に分離されることで設定のバックアップで抜けが発生したりすることが原理的になくなる
  • アカウント、デバイスに応じた設定のプロファイル切り替えとかも実装できる
  • プロファイルを持ち出して別のクライアントで使用ができる
  • レジストリAPIの叩きを削減しパフォーマンス向上
  • 特定のアカウントでだけ設定値を上書きするなどの芸当も可能に
  • 設定の自動バックアップ

image

image

TODO

  • プロファイルのバックアップと復元 (preferences-backup)
  • プロファイルの自動バックアップ
  • 旧設定値のマイグレート
  • テーマ関連(マイグレート)
  • accountDependent考慮
  • オーバーライドを設定するためのUI
  • タブ間での状態同期
  • その他のdefaultStoreプロパティについてpreferencesへの移行要否判断

nice2have

  • 設定が吹き飛んだことを検知してバックアップからの復元を提案する
  • バックアップはドライブではなくレジストリに保存する(ドライブだと内容をjsから読み込むことが難しい)
  • 「アカウントで同期」
  • plugin関連
  • defaultStore -> storeにする?
    • 変数名衝突回避
  • defaultStoreにdeckStoreを統合?
  • ColdDeviceStorage消す?

Additional info (optional)

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

@syuilo
Copy link
Member Author

syuilo commented Mar 8, 2025

設定が吹き飛んだことを検知してバックアップからの復元を提案するようにしたいけど、設定が吹き飛んでいるので設定が吹き飛んだことを原理的に検知できない

@syuilo
Copy link
Member Author

syuilo commented Mar 8, 2025

設定が存在しなかった場合、新しいデバイス/ブラウザからログインしたから存在しなかったのか、設定が吹き飛んだから存在しなかったのか判別できない

@syuilo
Copy link
Member Author

syuilo commented Mar 8, 2025

デバイス固有のIDみたいなのがJSで取得できればレジストリAPIで書き込んでおくことで、初めてのデバイスなのかそうでないのか判別することはできるけど、そのようなデバイスを特定できる情報は昨今プライバシーの関係で取得できなくなっている

@syuilo
Copy link
Member Author

syuilo commented Mar 8, 2025

まあ新しいデバイス/ブラウザからログインしたから設定が存在しなかった場合でもバックアップから設定を復元したいことは変わりがないことが多そうだから区別する必要はそんなにないか

Copy link

codecov bot commented Mar 8, 2025

Codecov Report

Attention: Patch coverage is 21.20429% with 2133 lines in your changes missing coverage. Please review.

Project coverage is 15.28%. Comparing base (a3d236c) to head (f727eaf).
Report is 728 commits behind head on develop.

Files with missing lines Patch % Lines
packages/frontend/src/deck.ts 0.41% 241 Missing ⚠️
packages/frontend/src/preferences/utility.ts 0.53% 185 Missing ⚠️
packages/frontend/src/preferences/profile.ts 0.59% 166 Missing ⚠️
...ckages/frontend/src/pages/settings/preferences.vue 0.00% 161 Missing ⚠️
packages/frontend/src/plugin.ts 0.00% 139 Missing ⚠️
...ackages/frontend/src/pages/settings/appearance.vue 0.00% 131 Missing ⚠️
packages/frontend/src/boot/main-boot.ts 0.00% 105 Missing ⚠️
...ntend/src/scripts/autogen/settings-search-index.ts 0.00% 74 Missing ⚠️
packages/frontend/src/pages/settings/plugin.vue 0.00% 72 Missing ⚠️
packages/frontend/src/preferences.ts 1.72% 57 Missing ⚠️
... and 124 more
Additional details and impacted files
@@             Coverage Diff              @@
##           develop   #15597       +/-   ##
============================================
- Coverage    41.74%   15.28%   -26.47%     
============================================
  Files         1549      784      -765     
  Lines       196555    72025   -124530     
  Branches      2767     1268     -1499     
============================================
- Hits         82055    11008    -71047     
+ Misses      113939    60593    -53346     
+ Partials       561      424      -137     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@syuilo syuilo merged commit d30ddd4 into develop Mar 9, 2025
22 checks passed
@syuilo syuilo deleted the refine-preferences branch March 9, 2025 03:34
DA-TENSHI pushed a commit to SHINANOSKEY-Projekt/SHINANOSKEY that referenced this pull request Mar 9, 2025
* wip

* wip

* wip

* test

* wip rollup pluginでsearchIndexの情報生成

* wip

* SPDX

* wip: markerIdを自動付与

* rollupでビルド時・devモード時に毎回uuidを生成するように

* 開発サーバーでだけ必要な挙動は開発サーバーのみで

* 条件が逆

* wip: childrenの生成

* update comment

* update comment

* rename auto generated file

* hashをパスと行数から決定

* Update privacy.vue

* Update privacy.vue

* wip

* Update general.vue

* Update general.vue

* wip

* wip

* Update SearchMarker.vue

* wip

* Update profile.vue

* Update mute-block.vue

* Update mute-block.vue

* Update general.vue

* Update general.vue

* childrenがduplicate key errorを吐く問題をいったん解決

* マーカーの形を成形

* loggerを置きかえ

* とりあえず省略記法に対応

* Refactor and Format codes

* wip

* Update settings-search-index.ts

* wip

* wip

* とりあえず不確定要因の仮置きidを削除

* hashの生成を正規化(絶対パスになっていたのを緩和)

* pathの入力を省略可能に

* adminでもパス生成できるように

* Update settings-search-index.ts

* Update privacy.vue

* wip

* build searchIndex

* wip

* build

* Update general.vue

* build

* Update sounds.vue

* build

* build

* Update sounds.vue

* 🎨

* 🎨

* Update privacy.vue

* Update privacy.vue

* Update security.vue

* create-search-indexを多少改善

* build

* Update 2fa.vue

* wip

* 必ずtransformCodeCacheを利用するように, キャッシュの明確な受け渡しを定義

* キャッシュはdevServerでなくても更新

* Revert "wip"

This reverts commit 41bffd3.

* inlining

* wip

* Update theme.vue

* 🎨

* wip normalize

* Update theme.vue

* キャッシュのパス変換

* build

* wip

* wip

* Update SearchMarker.vue

* i18n.ts['key'] の形式が取り出せない問題のFix

* build

* 仮でpath入れ

* 必ず絶対パスが使われるように

* wip

* 🎨

* storybookビルド時はcreateSearchIndexをしない

* inliningの構造化

* format code

* Update index.vue

* wip

* wip

* 🎨

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* clean up

* wip

* wip

* wip

* Update rollup-plugin-unwind-css-module-class-name.test.ts

* Update navbar.vue

* clean up

* wip

* wip

* wip

* wip

* wip

* Update preferences-backups.vue

* Update common.ts

* Update preferences.ts

* wip

* wip

* wip

* wip

* Update MkPreferenceContainer.vue

* Update MkPreferenceContainer.vue

* Update MkPreferenceContainer.vue

* enhance: 検索で上下矢印を使用することで検索結果を移動できるように

* Update main-boot.ts

* refactor

* wip

* Update sounds.vue

* fix(frontend): PageWindowでSearchMarkerが動作するように

* enhance(frontend): SearchMarkerの点滅を一定時間で止める

* wip

* lint fix

* fix: 子要素監視が抜けていたのを修正

* アニメーションの回数はCSSで制御するように

* refactor

* enhance(frontend): 検索インデックス作成時のログを削減

* revert

* fix

* fix

* Update preferences.ts

* Update preferences.ts

* wip

* Update preferences.ts

* wip

* 🎨

* wip

* Update MkPreferenceContainer.vue

* wip

* Update preferences.ts

* wip

* Update preferences.ts

* Update preferences.ts

* wip

* wip

* Update preferences.ts

* wip

* wip

* Update preferences.ts

* Update CHANGELOG.md

* Update preferences.ts

* Update deck-store.ts

* deckStoreをdefaultStoreに統合

* wip

* defaultStore -> store

* Update profile.ts

* wip

* refactor

* wip: plugin

* plugin

* plugin

* plugin

* Update plugin.ts

* wip

* Update plugin.vue

* Update preferences.ts

* Update main-boot.ts

* wip

* fix test

* Update plugin.vue

* Update plugin.vue

* Update utility.ts

* wip

* wip

* Update utility.ts

* wip

* wip

* clean up

* Update utility.ts

---------

Co-authored-by: tai-cha <dev@taichan.site>
Co-authored-by: taichan <40626578+tai-cha@users.noreply.github.com>
Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>
harumaki2000 pushed a commit to harumaki2000/misskey-layp that referenced this pull request Mar 11, 2025
* wip

* wip

* wip

* test

* wip rollup pluginでsearchIndexの情報生成

* wip

* SPDX

* wip: markerIdを自動付与

* rollupでビルド時・devモード時に毎回uuidを生成するように

* 開発サーバーでだけ必要な挙動は開発サーバーのみで

* 条件が逆

* wip: childrenの生成

* update comment

* update comment

* rename auto generated file

* hashをパスと行数から決定

* Update privacy.vue

* Update privacy.vue

* wip

* Update general.vue

* Update general.vue

* wip

* wip

* Update SearchMarker.vue

* wip

* Update profile.vue

* Update mute-block.vue

* Update mute-block.vue

* Update general.vue

* Update general.vue

* childrenがduplicate key errorを吐く問題をいったん解決

* マーカーの形を成形

* loggerを置きかえ

* とりあえず省略記法に対応

* Refactor and Format codes

* wip

* Update settings-search-index.ts

* wip

* wip

* とりあえず不確定要因の仮置きidを削除

* hashの生成を正規化(絶対パスになっていたのを緩和)

* pathの入力を省略可能に

* adminでもパス生成できるように

* Update settings-search-index.ts

* Update privacy.vue

* wip

* build searchIndex

* wip

* build

* Update general.vue

* build

* Update sounds.vue

* build

* build

* Update sounds.vue

* 🎨

* 🎨

* Update privacy.vue

* Update privacy.vue

* Update security.vue

* create-search-indexを多少改善

* build

* Update 2fa.vue

* wip

* 必ずtransformCodeCacheを利用するように, キャッシュの明確な受け渡しを定義

* キャッシュはdevServerでなくても更新

* Revert "wip"

This reverts commit 41bffd3.

* inlining

* wip

* Update theme.vue

* 🎨

* wip normalize

* Update theme.vue

* キャッシュのパス変換

* build

* wip

* wip

* Update SearchMarker.vue

* i18n.ts['key'] の形式が取り出せない問題のFix

* build

* 仮でpath入れ

* 必ず絶対パスが使われるように

* wip

* 🎨

* storybookビルド時はcreateSearchIndexをしない

* inliningの構造化

* format code

* Update index.vue

* wip

* wip

* 🎨

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* clean up

* wip

* wip

* wip

* Update rollup-plugin-unwind-css-module-class-name.test.ts

* Update navbar.vue

* clean up

* wip

* wip

* wip

* wip

* wip

* Update preferences-backups.vue

* Update common.ts

* Update preferences.ts

* wip

* wip

* wip

* wip

* Update MkPreferenceContainer.vue

* Update MkPreferenceContainer.vue

* Update MkPreferenceContainer.vue

* enhance: 検索で上下矢印を使用することで検索結果を移動できるように

* Update main-boot.ts

* refactor

* wip

* Update sounds.vue

* fix(frontend): PageWindowでSearchMarkerが動作するように

* enhance(frontend): SearchMarkerの点滅を一定時間で止める

* wip

* lint fix

* fix: 子要素監視が抜けていたのを修正

* アニメーションの回数はCSSで制御するように

* refactor

* enhance(frontend): 検索インデックス作成時のログを削減

* revert

* fix

* fix

* Update preferences.ts

* Update preferences.ts

* wip

* Update preferences.ts

* wip

* 🎨

* wip

* Update MkPreferenceContainer.vue

* wip

* Update preferences.ts

* wip

* Update preferences.ts

* Update preferences.ts

* wip

* wip

* Update preferences.ts

* wip

* wip

* Update preferences.ts

* Update CHANGELOG.md

* Update preferences.ts

* Update deck-store.ts

* deckStoreをdefaultStoreに統合

* wip

* defaultStore -> store

* Update profile.ts

* wip

* refactor

* wip: plugin

* plugin

* plugin

* plugin

* Update plugin.ts

* wip

* Update plugin.vue

* Update preferences.ts

* Update main-boot.ts

* wip

* fix test

* Update plugin.vue

* Update plugin.vue

* Update utility.ts

* wip

* wip

* Update utility.ts

* wip

* wip

* clean up

* Update utility.ts

---------

Co-authored-by: tai-cha <dev@taichan.site>
Co-authored-by: taichan <40626578+tai-cha@users.noreply.github.com>
Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
packages/frontend Client side specific issue/PR
Projects
Development

Successfully merging this pull request may close these issues.

3 participants