-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
feat(frontend): 設定プロファイルの同期 #17803
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
base: develop
Are you sure you want to change the base?
feat(frontend): 設定プロファイルの同期 #17803
Changes from all commits
8a3e332
0d677f2
b33ec08
c93b093
3ead8d8
4b82eab
76389b6
6649863
6aad117
41c20ce
5b8fdab
a01b6af
f42840a
b1980f1
4d85ea8
dad093c
1057295
440b1e4
7daec62
9b2f90f
4b633aa
597e634
d3677c2
459477b
c351d89
69d98c6
f45a09f
d6f1781
46282ab
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| # Preferences system | ||
|
|
||
| ユーザーの環境設定を管理するシステム。 | ||
|
|
||
| ## 指針 | ||
|
|
||
| 実装上のミスで、**設定値が意図せず失われる(古い値で上書きされる)ことが絶対にあってはならない。** | ||
|
|
||
| 設定値が失われる、考えられるシナリオの例: | ||
|
|
||
| - 複数のタブでMisskeyを開いていて、タブAで設定を編集した後、タブBを開いたところ、タブBの古い状態の内容で設定が保存され、タブAで行った編集が巻き戻ってしまった。 | ||
| - プロファイルの同期機能をオンにしたところ、サーバーに保存されていた古い設定でローカルが上書きされてしまった。 | ||
| - しばらく使用していなかったデバイスで起動したところ、まだバージョンが古く、当時のバージョンでは存在していなかった新しい設定項目を含むバックアップ情報がサーバーから降ってきたが、新しい設定項目が認識されず正規化時に除外され、その状態でバックアップが行われて結果的に設定項目の一部が失われてしまった。 | ||
|
|
||
| 上記のシナリオが絶対に発生しない設計・実装にしなければならない。 | ||
|
|
||
| 上記以外にも考えられるシナリオがあれば、必ず適切な対処を行う設計・実装にしなければならない。 | ||
|
|
||
| ## 仕様 | ||
|
|
||
| ### タブ間同期 | ||
|
|
||
| ブラウザで複数タブを開いているとき、あるタブで変更した設定が他のタブでも反映されるようにし、UXを向上させ、古い設定情報が上書き保存されることを防ぐ。 | ||
|
|
||
| ### 自動バックアップ(cloudBackup) | ||
|
|
||
| 定期的、または特定のタイミングなどで、プロファイルをサーバーに自動的にアップロードする。 | ||
|
|
||
| ### デバイス間同期(cloudSync) | ||
|
|
||
| 定期的、または特定のタイミングなどで、サーバーにアップロードされたプロファイルをダウンロードし、ローカルに適用する。 | ||
|
|
||
| ### 設定項目: デバイス間で同期(syncBetweenDevices, ValueMeta.sync) | ||
|
|
||
| デバイス間・プロファイル横断でその設定項目の設定値を同期する。 | ||
|
|
||
| 当オプションを有効にするかどうかは設定項目ごとに設定可能。 | ||
|
|
||
| ## ユーザーストーリー(ユースケース) | ||
|
|
||
| ### 同じプロファイルを複数のデバイスで使いたい(同期したい) | ||
|
|
||
| autoBackupとautoSyncをオンにする。 | ||
|
Comment on lines
+41
to
+43
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
rg -n -C 8 \
'shareSameProfileBetweenDevicesIsNotRecommended|useSyncBetweenDevicesOptionIfYouWantToSyncSetting|autoSyncAreYouSure_description|youNeedToNameYourProfileToEnableAutoBackup|autoBackup|autoSync|syncBetweenDevices' \
packages/frontend/src/preferences/manager.ts \
packages/frontend/src/preferences.ts \
packages/frontend/src/preferences/utility.ts \
packages/frontend/src/pages/settings/other.vue \
locales/ja-JP.ymlRepository: misskey-dev/misskey Length of output: 12033 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== docs/preferences.md around referenced lines =="
sed -n '20,60p' packages/frontend/docs/preferences.md
echo
echo "== syncBetweenDevices references =="
rg -n -C 8 'syncBetweenDevices|overrideByAccount|modifyPreference|getPreference|setPreference|pref\.enablePreferencesAutoCloudSync|enablePreferencesAutoCloudSync|enablePreferencesAutoCloudBackup|cloudSync|cloudBackup|_preferencesProfile|shareSameProfileBetweenDevicesIsNotRecommended|useSyncBetweenDevicesOptionIfYouWantToSyncSetting|autoSyncAreYouSure_description' packages/frontend/src packages/frontend/docs || true
echo
echo "== store schema preferences keys =="
rg -n "enablePreferencesAutoCloudSync|enablePreferencesAutoCloudBackup|preventAutoBackup|latestPreferencesBackupAt" packages/frontend/src locales/ja-JP.ymlRepository: misskey-dev/misskey Length of output: 43442 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== packages/frontend/src/preferences/utility.ts cloudBackup/cloudSync/mergeProfiles =="
sed -n '196,270p' packages/frontend/src/preferences/utility.ts
echo
echo "== packages/frontend/src/preferences/manager.ts sync-related registry methods =="
rg -n -C 12 'isSyncEnabled|set.*Sync|Sync|autoBackup|autoSync|cloudSync|cloudBackup|Registry|registry/get|registry/set|registry/delete|prevent' packages/frontend/src/preferences/manager.ts packages/frontend/src/preferences/utility.ts
echo
echo "== packages/frontend/src/preferences.ts cloud backup/sync periodics =="
sed -n '100,140p' packages/frontend/src/preferences.ts
echo
echo "== packages/frontend/src/pages/settings/index.vue auto backup button prompt =="
sed -n '18,23p;18,22p' packages/frontend/src/pages/settings/index.vueRepository: misskey-dev/misskey Length of output: 28247 同一プロファイル共有の手順と前提条件を追加してください。
🤖 Prompt for AI Agents |
||
|
|
||
| ### (新しいデバイスなどで)既存のプロファイルを継承した新しいプロファイルを作りたい | ||
|
|
||
| 継承したいプロファイルをバックアップから復元した後、プロファイルの名前を変える。 | ||
|
|
||
| ## メモ | ||
|
|
||
| autoBackupとautoSyncの違いがユーザーにとって分かりにくい可能性があるので、機能を一本化するか、個別にオンオフを切り替えられるのではなく「自動バックアップ:『しない/有効/有効+同期』」みたいな選択方式にするなどがいいかもしれない? | ||
|
|
||
| autoBackupはするがautoSyncしたくないケースはあまりないと思うが、一本化すると複数のデバイスで同一のプロファイルを共有しない人(大多数だと思われる)にとっては無駄に通信量が増えるだけになる | ||
Uh oh!
There was an error while loading. Please reload this page.