6bb10ca40e
- Added external editor callback support to extension UI dialogs and hook selector for opening plans in external editor. - Added `matchesAppExternalEditor()` keybinding matcher to detect external editor shortcuts (ctrl+g) across components. - Added `trimTrailingNewline` option to `openInEditor()` function to preserve trailing newlines when editing externally. - Modified plan review flow to re-read plan content from disk before approval to reflect external editor changes. - Refactored plan preview rendering to cache and reuse UI container instead of recreating children on each render. - Refactored Promise creation in external editor utility to use `Promise.withResolvers()` for cleaner async handling.