Skip to content

Commit 06cedf0

Browse files
authored
Merge pull request #10 from puterjam/dev
fix: numpad enter key support and re-apply config after editing activ…
2 parents fd45a76 + a123e45 commit 06cedf0

8 files changed

Lines changed: 45 additions & 5 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "persona",
3-
"version": "1.3.7",
3+
"version": "1.3.8",
44
"description": "CLI tool to switch Claude CLI configurations between different model providers",
55
"type": "module",
66
"main": "dist/persona",

src/commands/edit.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,16 @@ export async function editProviderInteractive(providerId: string): Promise<void>
111111

112112
configStore.updateProvider(providerId, updates);
113113

114+
// Re-apply config if editing the active provider
115+
const target = provider.target || 'claude';
116+
const activeProvider = configStore.getActiveProvider(target);
117+
if (activeProvider?.id === providerId) {
118+
const updatedProvider = configStore.getProvider(providerId);
119+
if (updatedProvider) {
120+
configStore.applyProvider(updatedProvider, true);
121+
}
122+
}
123+
114124
console.log(chalk.green(`\nProvider "${answers.name}" updated successfully!`));
115125
}
116126

@@ -155,5 +165,15 @@ export function editProviderFromArgs(providerId: string, args: {
155165

156166
configStore.updateProvider(providerId, updates);
157167

168+
// Re-apply config if editing the active provider
169+
const target = provider.target || 'claude';
170+
const activeProvider = configStore.getActiveProvider(target);
171+
if (activeProvider?.id === providerId) {
172+
const updatedProvider = configStore.getProvider(providerId);
173+
if (updatedProvider) {
174+
configStore.applyProvider(updatedProvider, true);
175+
}
176+
}
177+
158178
console.log(chalk.green(`\nProvider "${provider.name}" updated successfully!`));
159179
}

src/tui/components/App.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,15 @@ export function TuiApp({ renderer }: TuiAppProps) {
203203
if (apiKey) updates.apiKey = apiKey
204204

205205
updateProvider(provider.id, updates)
206+
207+
// Re-apply config if editing the active provider
208+
if (activeProvider?.id === provider.id) {
209+
const updatedProvider = configStore.getProvider(provider.id)
210+
if (updatedProvider) {
211+
configStore.applyProvider(updatedProvider, true)
212+
}
213+
}
214+
206215
setListContainerKey(k => k + 1)
207216
setDetailContent({ type: "message", message: `✓ Provider "${name}" updated successfully!` })
208217
updateStatus("Provider updated")

src/tui/components/ProviderList.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
import type { SelectOption } from "@opentui/core"
1+
import type { SelectOption, SelectKeyBinding } from "@opentui/core"
22
import type { ThemeColors } from "../../utils/theme"
33

4+
const kpenterBindings: SelectKeyBinding[] = [
5+
{ name: "kpenter", action: "select-current" }
6+
]
7+
48
interface ProviderListProps {
59
options: SelectOption[]
610
selectedIndex: number
@@ -52,6 +56,7 @@ export function ProviderList({
5256
showDescription={true}
5357
showScrollIndicator={true}
5458
wrapSelection={false}
59+
keyBindings={kpenterBindings}
5560
/>
5661
</box>
5762
)

src/tui/components/dialogs/ConfirmDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export function ConfirmDialog({ title, message, onClose }: ConfirmDialogProps) {
2222
useKeyboard((key) => {
2323
if (key.name === "left" || key.name === "right") {
2424
setSelectedButton((prev) => (prev === 0 ? 1 : 0))
25-
} else if (key.name === "return") {
25+
} else if (key.name === "return" || key.name === "kpenter") {
2626
onClose(selectedButton === 0)
2727
} else if (key.name === "escape") {
2828
onClose(null)

src/tui/components/dialogs/InputDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function InputDialog({ title, message, defaultValue = "", required = fals
2424
const handleKey = useCallback((key: any) => {
2525
if (key.name === "escape") {
2626
onClose(null)
27-
} else if (key.name === "return") {
27+
} else if (key.name === "return" || key.name === "kpenter") {
2828
const trimmed = value.trim()
2929
if (!required || trimmed !== "") {
3030
onClose(value)

src/tui/components/dialogs/ListDialog.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import { useState } from "react"
22
import { useRenderer, useKeyboard } from "@opentui/react"
3+
import type { SelectKeyBinding } from "@opentui/core"
34
import { getThemeColors, layout } from "../../../utils/theme"
45

6+
const kpenterBindings: SelectKeyBinding[] = [
7+
{ name: "kpenter", action: "select-current" }
8+
]
9+
510
interface ListDialogProps {
611
title: string
712
choices: { name: string; value: string }[]
@@ -90,6 +95,7 @@ export function ListDialog({ title, choices, onClose }: ListDialogProps) {
9095
selectedTextColor={colors.selectedText}
9196
showDescription={false}
9297
focused={true}
98+
keyBindings={kpenterBindings}
9399
zIndex={202}
94100
/>
95101
<text

src/version.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const VERSION = "1.3.7"
1+
export const VERSION = "1.3.8"

0 commit comments

Comments
 (0)