ADR-0010 設定は JSON ファイルに置く
状況
localStorage は Electron の userData 配下でオリジン単位に分かれ、開発版と配布版で共有されず、手で編集も持ち運びもしにくい。
決定
- すべての設定を 1 ファイル
$XDG_CONFIG_HOME/mdslide/settings.json(既定 ~/.config/mdslide/settings.json、MDSLIDE_CONFIG で上書き)に置く。
- 内容:最後に開いたフォルダ、コンソールの開閉・高さ・自動起動、CLI ツールの選択と差分(既定と同じプリセットは書かない)、ヘルプ既読。
- レンダラは
src/settings/settings.ts の 1 インスタンスだけを通す。書き込みは 300ms デバウンス、main 側で一時ファイル→rename の原子的置換。
- 未知のキーは保持し、欠けたキーは既定値で補う。壊れていれば既定値で起動し、通知を出す。
- ウィンドウがフォーカスを得たときに再読込し、手編集を反映する。
- ブラウザ版は同じ文書を localStorage の 1 キーに保存。旧キーは初回起動時に一度だけ移行。
結果
- 設定を Git や dotfiles で管理できる。開発版と配布版で共有される。
- 設定の読み込みが非同期になったため、App は読み込み完了まで描画しない。