@@ -57,7 +57,7 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
5757 private val outerCardPanel = JPanel (outerCardLayout)
5858 private val pendingFilesPanel = PendingFilesPanel (project, this )
5959 private var tuiPanel: TuiPanel = createTuiPanel()
60- private var activeTuiEngine: TerminalEngine = OpenCodeSettings .getInstance(project).terminalEngine
60+ private var activeTuiEngine: TerminalEngine = effectiveEngine( OpenCodeSettings .getInstance(project).terminalEngine)
6161 private val syncScheduled = AtomicBoolean (false )
6262 private val plugin = OpenCodePlugin .getInstance(project)
6363 private val serverStateListener = ServerStateListener { requestSyncCard() }
@@ -177,12 +177,7 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
177177 * it into the split pane — all without requiring an IDE restart.
178178 */
179179 private fun swapTuiPanelIfEngineChanged () {
180- val requestedEngine = OpenCodeSettings .getInstance(project).terminalEngine
181- val effectiveEngine = if (requestedEngine == TerminalEngine .REWORKED && ! BuildUtils .isEmbeddedTerminalSupported) {
182- TerminalEngine .CLASSIC
183- } else {
184- requestedEngine
185- }
180+ val effectiveEngine = effectiveEngine(OpenCodeSettings .getInstance(project).terminalEngine)
186181 if (effectiveEngine == activeTuiEngine) return
187182
188183 // Stop and dispose the old panel.
@@ -224,14 +219,24 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
224219 */
225220 private fun createTuiPanel (): TuiPanel {
226221 val settings = OpenCodeSettings .getInstance(project)
227- val engine = settings.terminalEngine
228- return if (engine == TerminalEngine .REWORKED && BuildUtils .isEmbeddedTerminalSupported) {
222+ return if (effectiveEngine(settings.terminalEngine) == TerminalEngine .REWORKED ) {
229223 ReworkedTuiPanel (project, this , onTerminated = { requestSyncCard() })
230224 } else {
231225 ClassicTuiPanel (project, this , onTerminated = { requestSyncCard() })
232226 }
233227 }
234228
229+ /* *
230+ * Resolves the effective [TerminalEngine] to use, falling back to [TerminalEngine.CLASSIC]
231+ * when [TerminalEngine.REWORKED] is requested but the IDE version does not support it.
232+ */
233+ private fun effectiveEngine (requested : TerminalEngine ): TerminalEngine =
234+ if (requested == TerminalEngine .REWORKED && ! BuildUtils .isEmbeddedTerminalSupported) {
235+ TerminalEngine .CLASSIC
236+ } else {
237+ requested
238+ }
239+
235240 private var disposed = false
236241
237242 override fun dispose () {
0 commit comments