Skip to content

Commit 6ab6338

Browse files
committed
changes
1 parent 9d588e3 commit 6ab6338

File tree

7 files changed

+49
-1
lines changed

7 files changed

+49
-1
lines changed

src/core/webview/ClineProvider.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ type GlobalStateKey =
123123
| "customModes" // Array of custom modes
124124
| "unboundModelId"
125125
| "unboundModelInfo"
126+
| "disablePowerLevel10k" // Disable Power Level 10k
126127

127128
export const GlobalFileNames = {
128129
apiConversationHistory: "api_conversation_history.json",
@@ -1472,6 +1473,10 @@ export class ClineProvider implements vscode.WebviewViewProvider {
14721473
await this.postStateToWebview()
14731474
}
14741475
break
1476+
case "disablePowerLevel10k":
1477+
await this.updateGlobalState("disablePowerLevel10k", message.bool ?? false)
1478+
await this.postStateToWebview()
1479+
break
14751480
case "deleteCustomMode":
14761481
if (message.slug) {
14771482
const answer = await vscode.window.showInformationMessage(
@@ -2214,6 +2219,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
22142219
enhancementApiConfigId,
22152220
autoApprovalEnabled,
22162221
experiments,
2222+
disablePowerLevel10k,
22172223
} = await this.getState()
22182224

22192225
const allowedCommands = vscode.workspace.getConfiguration("roo-cline").get<string[]>("allowedCommands") || []
@@ -2260,6 +2266,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
22602266
customModes: await this.customModesManager.getCustomModes(),
22612267
experiments: experiments ?? experimentDefault,
22622268
mcpServers: this.mcpHub?.getServers() ?? [],
2269+
disablePowerLevel10k: disablePowerLevel10k ?? false,
22632270
}
22642271
}
22652272

@@ -2391,6 +2398,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
23912398
unboundApiKey,
23922399
unboundModelId,
23932400
unboundModelInfo,
2401+
disablePowerLevel10k,
23942402
] = await Promise.all([
23952403
this.getGlobalState("apiProvider") as Promise<ApiProvider | undefined>,
23962404
this.getGlobalState("apiModelId") as Promise<string | undefined>,
@@ -2467,6 +2475,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
24672475
this.getSecret("unboundApiKey") as Promise<string | undefined>,
24682476
this.getGlobalState("unboundModelId") as Promise<string | undefined>,
24692477
this.getGlobalState("unboundModelInfo") as Promise<ModelInfo | undefined>,
2478+
this.getGlobalState("disablePowerLevel10k") as Promise<boolean | undefined>,
24702479
])
24712480

24722481
let apiProvider: ApiProvider
@@ -2589,6 +2598,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
25892598
experiments: experiments ?? experimentDefault,
25902599
autoApprovalEnabled: autoApprovalEnabled ?? false,
25912600
customModes,
2601+
disablePowerLevel10k: disablePowerLevel10k ?? false,
25922602
}
25932603
}
25942604

src/integrations/terminal/TerminalManager.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ TerminalProcess extends EventEmitter and implements Promise:
1414
- Emits 'line' events with output while promise is pending
1515
- process.continue() resolves promise and stops event emission
1616
- Allows real-time output handling or background execution
17+
- Retrieve missed output later
1718
1819
getUnretrievedOutput() fetches latest output for ongoing commands
1920

src/integrations/terminal/TerminalProcess.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { EventEmitter } from "events"
22
import stripAnsi from "strip-ansi"
33
import * as vscode from "vscode"
4+
import { ClineProvider } from "../../core/webview/ClineProvider"
45

56
export interface TerminalProcessEvents {
67
line: [line: string]
@@ -27,8 +28,14 @@ export class TerminalProcess extends EventEmitter<TerminalProcessEvents> {
2728
// super()
2829

2930
async run(terminal: vscode.Terminal, command: string) {
31+
const visibleProvider = await ClineProvider.getInstance()
32+
const state = await visibleProvider?.getState()
33+
const disablePowerLevel10k = state?.disablePowerLevel10k ?? false
3034
if (terminal.shellIntegration && terminal.shellIntegration.executeCommand) {
31-
const execution = terminal.shellIntegration.executeCommand(command)
35+
const prefix = "prompt_powerlevel9k_teardown &&"
36+
const execution = terminal.shellIntegration.executeCommand(
37+
disablePowerLevel10k ? `${prefix} ${command}` : command,
38+
)
3239
const stream = execution.read()
3340
// todo: need to handle errors
3441
let isFirstChunk = true

src/shared/ExtensionMessage.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export interface ExtensionMessage {
4545
| "unboundModels"
4646
| "refreshUnboundModels"
4747
| "currentCheckpointUpdated"
48+
| "disablePowerLevel10k"
4849
text?: string
4950
action?:
5051
| "chatButtonClicked"
@@ -125,6 +126,7 @@ export interface ExtensionState {
125126
autoApprovalEnabled?: boolean
126127
customModes: ModeConfig[]
127128
toolRequirements?: Record<string, boolean> // Map of tool names to their requirements (e.g. {"apply_diff": true} if diffEnabled)
129+
disablePowerLevel10k?: boolean // Whether to disable Powerlevel10k theme
128130
}
129131

130132
export interface ClineMessage {

src/shared/WebviewMessage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ export interface WebviewMessage {
9090
| "openCustomModesSettings"
9191
| "checkpointDiff"
9292
| "checkpointRestore"
93+
| "disablePowerLevel10k"
9394
text?: string
9495
disabled?: boolean
9596
askResponse?: ClineAskResponse

webview-ui/src/components/settings/SettingsView.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ const SettingsView = ({ onDone }: SettingsViewProps) => {
6363
setExperimentEnabled,
6464
alwaysAllowModeSwitch,
6565
setAlwaysAllowModeSwitch,
66+
disablePowerLevel10k,
67+
setDisablePowerLevel10k,
6668
} = useExtensionState()
6769
const [apiErrorMessage, setApiErrorMessage] = useState<string | undefined>(undefined)
6870
const [modelIdErrorMessage, setModelIdErrorMessage] = useState<string | undefined>(undefined)
@@ -111,6 +113,9 @@ const SettingsView = ({ onDone }: SettingsViewProps) => {
111113
})
112114

113115
vscode.postMessage({ type: "alwaysAllowModeSwitch", bool: alwaysAllowModeSwitch })
116+
117+
vscode.postMessage({ type: "disablePowerLevel10k", bool: disablePowerLevel10k })
118+
114119
onDone()
115120
}
116121
}
@@ -736,6 +741,24 @@ const SettingsView = ({ onDone }: SettingsViewProps) => {
736741
))}
737742
</div>
738743
</div>
744+
<div style={{ marginBottom: 40 }}>
745+
<h3 style={{ color: "var(--vscode-foreground)", margin: "0 0 15px 0" }}>Terminal Settings</h3>
746+
<div style={{ marginBottom: 15 }}>
747+
<VSCodeCheckbox
748+
checked={disablePowerLevel10k}
749+
onChange={(e: any) => setDisablePowerLevel10k(e.target.checked)}>
750+
<span style={{ fontWeight: "500" }}>Disable PowerLevel10k</span>
751+
</VSCodeCheckbox>
752+
<p
753+
style={{
754+
fontSize: "12px",
755+
marginTop: "5px",
756+
color: "var(--vscode-descriptionForeground)",
757+
}}>
758+
When enabled, Roo will disable the PowerLevel10k theme in the terminal.
759+
</p>
760+
</div>
761+
</div>
739762

740763
<div
741764
style={{

webview-ui/src/context/ExtensionStateContext.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ export interface ExtensionStateContextType extends ExtensionState {
7979
handleInputChange: (field: keyof ApiConfiguration, softUpdate?: boolean) => (event: any) => void
8080
customModes: ModeConfig[]
8181
setCustomModes: (value: ModeConfig[]) => void
82+
disablePowerLevel10k: boolean
83+
setDisablePowerLevel10k: (value: boolean) => void
8284
}
8385

8486
export const ExtensionStateContext = createContext<ExtensionStateContextType | undefined>(undefined)
@@ -114,6 +116,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
114116
enhancementApiConfigId: "",
115117
autoApprovalEnabled: false,
116118
customModes: [],
119+
disablePowerLevel10k: false,
117120
})
118121

119122
const [didHydrateState, setDidHydrateState] = useState(false)
@@ -335,6 +338,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
335338
setAutoApprovalEnabled: (value) => setState((prevState) => ({ ...prevState, autoApprovalEnabled: value })),
336339
handleInputChange,
337340
setCustomModes: (value) => setState((prevState) => ({ ...prevState, customModes: value })),
341+
setDisablePowerLevel10k: (value) => setState((prevState) => ({ ...prevState, disablePowerLevel10k: value })),
338342
}
339343

340344
return <ExtensionStateContext.Provider value={contextValue}>{children}</ExtensionStateContext.Provider>

0 commit comments

Comments
 (0)