Skip to content

[editor] 呼び出し元ゼロの dead API 除去と、レビュー由来の小修正 #284

Description

@shinyaoguri

#238 (2026-08 レビューのまとめ Issue) をサブシステム別に分割したうちの editor 分。
項目番号 (e1〜e6) は #238 のトリアージコメントの採番。現存は 2026-08-24 / HEAD d61f126 で再確認済み
(dead API は grep -rn --include='*.ts' で「1 ヒット = 定義のみ」を個別に確認)。

dead API の除去 (e3 + トリアージで追加発見した分)

呼び出し元ゼロのメソッド。exportSingleTab が最優先waitForQueueDrain を通さず exportProof
呼ぶので、将来誰かが配線すると #225 が再発する

メソッド 位置 行数 備考
TabManager.exportSingleTab TabManager.ts:1558-1564 7 #225 再発の地雷。最優先で削除
TabManager.exportAllTabs :1569-1623 55 shared の MultiFileExportedProof / isMultiFileProof / types.test.ts も道連れ → #231(a) で spec §5.4 を削る
TabManager.reset :1524-1553 30 JSDoc の「reCAPTCHA」も stale
TabManager.getActiveContent :1628-1631 4
TabManager.getSessionService :1516-1518 3
TabManager.getSyncStatus :238-240 3
SessionStorageService.pruneOldSessions SessionStorageService.ts:721-747 27 (+73) 唯一の呼び出し元だった private deleteSessionById :752-824 も道連れ
SessionStorageService.truncateEvents :584-614 31
SessionStorageService.updateTabContent :469-476 8
SessionStorageService.updateTabMetadata :481-491 11

合計 −190 行程度。

updateSessionActivity / markSessionInactive / getInstanceId / isSessionActive#268 の管轄なので
この Issue では触らない (getInstanceId#237 で使う予定)。

e2 — 記録エラー時のフォールバック index で直前イベントを二重処理する

packages/shared/src/TypingProof.ts:415-425 / packages/editor/src/services/EventRecorder.ts:86-104

TypingProof の catch が { index: events.length - 1 } で resolve するため、EventRecorder
events[result.index] = 直前の成功イベントを LogViewer と IDB に再投入する。

再現済み (潜在): 2 件目の computeHash を 1 回だけ throw させると recordEvent
{index:0, hash:<1 件目>} で resolve し events.length === 1 になる。IDB 側は unique index で黙って弾かれるので
二重保存にはならず、LogViewer の二重表示のみ顕在化する。到達性は低い
(PoSW worker 障害は main-thread fallback で throw しなくなっている)。

方針: RecordEventResultrecorded: false を足して呼び出し側で分岐する。~10 行

e1 — 削除操作の分類が粗く、コメントと実挙動が一致しない

packages/editor/src/services/OperationDetector.ts:83-106, 146-151

rangeLength 2..49 を複数行でも deleteWordBackward と分類する。advisory メタデータのみで
pureTyping への影響はない (削除系 inputType はすべて ALLOWED_INPUT_TYPES) が、分析層の入力品質を下げる。
~15 行 + テスト。

e5 — 復元時の合成 tabSwitch が復元経路に依存して非決定的

packages/editor/src/services/TabManager.ts:684-699

isRestoring 中は IDB への persistTabSwitch だけ抑止し、tabSwitches.push と sessionStorage 保存は実行する。
結果、sessionStorage 復元ではリロードのたびに fromTabId:null が 1 件ずつ蓄積し、
IDB 復旧では IDB 由来 + 合成 1 件になる。監査証跡が復元経路で変わる。advisory のみ。1-3 行 + テスト。

e4 — beforeunloaddeleteScreenshotsDB() は legacy DB しか消さない

packages/editor/src/ui/StaticEventListeners.ts:331-332 / StorageClearHelper.ts:65-71

削除対象は 'typedcode-screenshots' のみ。コメントは全 DB を消すかのように読める。コメント 2 行の修正。

e6 — stale コメント waitForProcessingComplete()

packages/shared/src/TypingProof.ts:954-956

「旧 API 名」ではなく、同名の private メソッドが packages/editor/src/services/ProofExporter.ts:130現存する。
stale なのは (a) shared から editor 内部名を参照している点、(b) 整合性の根拠が #225 以降
waitForQueueDrain + 未排出時の export 中止に移った点。2 行

備考

Refs #238 #243

Metadata

Metadata

Assignees

No one assigned

    Labels

    code-review2026-07 多角レビュー由来pkg:editorpackages/editorseverity:low軽微な問題 (実害は無いが放置コストがある)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions