* refactor(layout): add the editor tab view type to the layout model (unused)
Move the open-file sub-types a diff, markdown preview, conflict, check-details or chat-visual tab
carries into src/shared, and give the layout model's editor record an optional view keyed by mode.
The Serializer leaves it off disk, so the saved session is byte-identical. Nothing sets it yet.
* refactor(layout): hold non-file editor views by tab id, not on the file record
Diff, preview, conflict-review, check-details and chat-visual tabs use a worktree root or a
synthetic id as their path, so on the file record they would collide and save as edit tabs. The
file record keeps only the edit-tab conflict view; the others live in an unsaved map keyed by tab
id, set by openEditorTab's new optional view and dropped when the tab closes.
* refactor(layout): keep every editor tab view in the one unsaved map
Edit-tab conflict details join the other views in the per-workspace map keyed by tab id, so the
file record and the Serializer are unchanged and there is one place to read a view.