Skip to content

Commit 8d49e24

Browse files
committed
chore: park reworked terminal implementation
chore: min version 2024.3.7 instead of 2025.3.3
1 parent 3faf46b commit 8d49e24

6 files changed

Lines changed: 24 additions & 31 deletions

File tree

build.gradle.kts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repositories {
1616

1717
dependencies {
1818
intellijPlatform {
19-
intellijIdea("2025.3.3")
19+
intellijIdea("2024.3.7")
2020
pluginVerifier()
2121
bundledPlugin("org.jetbrains.plugins.terminal")
2222
}
@@ -39,14 +39,14 @@ intellijPlatform {
3939
}
4040

4141
ideaVersion {
42-
sinceBuild = "253"
42+
sinceBuild = "243"
4343
untilBuild = provider { null }
4444
}
4545
}
4646

4747
pluginVerification {
4848
ides {
49-
create(org.jetbrains.intellij.platform.gradle.IntelliJPlatformType.IntellijIdea, "2025.3.3")
49+
create(org.jetbrains.intellij.platform.gradle.IntelliJPlatformType.IntellijIdea, "2024.3.7")
5050
}
5151
}
5252

@@ -71,4 +71,9 @@ tasks {
7171

7272
kotlin {
7373
jvmToolchain(21)
74+
75+
sourceSets.named("main") {
76+
kotlin.exclude("com/ashotn/opencode/relay/terminal/ReworkedTuiPanel.kt")
77+
kotlin.exclude("com/ashotn/opencode/relay/terminal/NewSessionTerminalAllowedActionsProvider.kt")
78+
}
7479
}

src/main/kotlin/com/ashotn/opencode/relay/settings/OpenCodeSettings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class OpenCodeSettings : PersistentStateComponent<OpenCodeSettings.State> {
1313
enum class TerminalEngine {
1414
/** JBTerminalWidget (classic terminal plugin, works on all supported IDE versions). */
1515
CLASSIC,
16-
/** TerminalToolWindowTabsManager (reworked terminal, requires IntelliJ 2025.3+). */
16+
/** Parked reworked terminal option kept for easy re-enable later. */
1717
REWORKED,
1818
}
1919

src/main/kotlin/com/ashotn/opencode/relay/settings/OpenCodeSettingsConfigurable.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,6 @@ class OpenCodeSettingsConfigurable(private val project: Project) :
9292
radioButton("Classic (Recommended)", TerminalEngine.CLASSIC)
9393
.comment("Legacy JediTerm widget.")
9494
}
95-
row {
96-
radioButton("Reworked", TerminalEngine.REWORKED)
97-
.comment("New terminal engine.")
98-
}
9995
}.bind(pendingState::terminalEngine)
10096
}
10197
group("Diagnostics") {
@@ -216,7 +212,8 @@ class OpenCodeSettingsConfigurable(private val project: Project) :
216212
pendingState.diffTraceEnabled = settings.diffTraceEnabled
217213
pendingState.diffTraceHistoryEnabled = settings.diffTraceHistoryEnabled
218214
pendingState.inlineTerminalEnabled = settings.inlineTerminalEnabled
219-
pendingState.terminalEngine = settings.terminalEngine
215+
pendingState.terminalEngine =
216+
if (settings.terminalEngine == TerminalEngine.REWORKED) TerminalEngine.CLASSIC else settings.terminalEngine
220217
}
221218

222219
private fun persistPendingToSettings(settings: OpenCodeSettings) {

src/main/kotlin/com/ashotn/opencode/relay/terminal/TuiPanel.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ import javax.swing.JPanel
77
* Common contract for the embeddable terminal panel that runs
88
* `opencode attach <server-url>` inside the tool window.
99
*
10-
* Two implementations exist:
11-
* - [ClassicTuiPanel] – backed by [com.jediterm.terminal.ui.JediTermWidget] / JBTerminalWidget
12-
* - [ReworkedTuiPanel] – backed by the new TerminalToolWindowTabsManager API (IJ 2025.3+)
13-
*
1410
* The active implementation is chosen by
1511
* [com.ashotn.opencode.relay.settings.OpenCodeSettings.terminalEngine].
12+
*
13+
* The reworked implementation is currently parked and excluded from the build,
14+
* so the runtime always uses [ClassicTuiPanel].
1615
*/
1716
interface TuiPanel : Disposable {
1817
/** The Swing component to embed in the tool window. */

src/main/kotlin/com/ashotn/opencode/relay/toolwindow/OpenCodeToolWindowPanel.kt

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import com.ashotn.opencode.relay.settings.OpenCodeSettings
1414
import com.ashotn.opencode.relay.settings.OpenCodeSettings.TerminalEngine
1515
import com.ashotn.opencode.relay.settings.OpenCodeSettingsChangedListener
1616
import com.ashotn.opencode.relay.terminal.ClassicTuiPanel
17-
import com.ashotn.opencode.relay.terminal.ReworkedTuiPanel
1817
import com.ashotn.opencode.relay.terminal.TuiPanel
1918
import com.intellij.openapi.Disposable
2019
import com.intellij.openapi.application.ApplicationManager
@@ -58,7 +57,7 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
5857
private val outerCardPanel = JPanel(outerCardLayout)
5958
private val pendingFilesPanel = PendingFilesPanel(project, this)
6059
private var tuiPanel: TuiPanel = createTuiPanel()
61-
private var activeTuiEngine: TerminalEngine = OpenCodeSettings.getInstance(project).terminalEngine
60+
private var activeTuiEngine: TerminalEngine = effectiveTerminalEngine(OpenCodeSettings.getInstance(project).terminalEngine)
6261
private val syncScheduled = AtomicBoolean(false)
6362
private val plugin = OpenCodePlugin.getInstance(project)
6463
private val serverStateListener = ServerStateListener { requestSyncCard() }
@@ -193,7 +192,7 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
193192
* it into the split pane — all without requiring an IDE restart.
194193
*/
195194
private fun swapTuiPanelIfEngineChanged() {
196-
val configuredEngine = OpenCodeSettings.getInstance(project).terminalEngine
195+
val configuredEngine = effectiveTerminalEngine(OpenCodeSettings.getInstance(project).terminalEngine)
197196
if (configuredEngine == activeTuiEngine) return
198197

199198
// Stop and dispose the old panel.
@@ -226,17 +225,14 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
226225
}
227226

228227
/**
229-
* Creates the appropriate [TuiPanel] implementation for the currently configured
230-
* [OpenCodeSettings.terminalEngine].
228+
* Creates the terminal panel for the currently configured [OpenCodeSettings.terminalEngine].
229+
* The reworked implementation is parked and currently resolved to [ClassicTuiPanel].
231230
*/
232-
private fun createTuiPanel(): TuiPanel {
233-
val settings = OpenCodeSettings.getInstance(project)
234-
return if (settings.terminalEngine == TerminalEngine.REWORKED) {
235-
ReworkedTuiPanel(project, this, onTerminated = { requestSyncCard() })
236-
} else {
237-
ClassicTuiPanel(project, this, onTerminated = { requestSyncCard() })
238-
}
239-
}
231+
private fun createTuiPanel(): TuiPanel =
232+
ClassicTuiPanel(project, this, onTerminated = { requestSyncCard() })
233+
234+
private fun effectiveTerminalEngine(requested: TerminalEngine): TerminalEngine =
235+
if (requested == TerminalEngine.REWORKED) TerminalEngine.CLASSIC else requested
240236

241237

242238
private var disposed = false
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
<idea-plugin>
2-
<!-- Extensions that are only active when the Terminal plugin is present -->
3-
<extensions defaultExtensionNs="org.jetbrains.plugins.terminal">
4-
<allowedActionsProvider
5-
implementation="com.ashotn.opencode.relay.terminal.NewSessionTerminalAllowedActionsProvider"/>
6-
</extensions>
2+
<!-- Reworked terminal integrations are parked for now. Restore provider registration here when re-enabling. -->
73
</idea-plugin>

0 commit comments

Comments
 (0)