Skip to content

Commit f177f28

Browse files
authored
Merge pull request Stack-Cairn#331 from AlphaCatMeow/codex/fix-custom-header-plaintext
fix(providers): show custom header values in plaintext
2 parents bdc2539 + ff50990 commit f177f28

4 files changed

Lines changed: 4 additions & 98 deletions

File tree

crates/agent-gateway/web/src/i18n/config.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1386,8 +1386,6 @@ export const translations: Record<Locale, Record<string, string>> = {
13861386
"settings.noCustomHeaders": "暂无自定义请求头",
13871387
"settings.noCustomHeadersHint": "点击此处新增,输入名称时会自动联想常用请求头。",
13881388
"settings.customHeaderReservedTitle": "保留头,由系统管理",
1389-
"settings.showCustomHeaderValue": "显示请求头值",
1390-
"settings.hideCustomHeaderValue": "隐藏请求头值",
13911389
"settings.manualAddModel": "手动添加",
13921390
"settings.customHeaderKeyPlaceholder": "请求头名称",
13931391
"settings.addCustomHeader": "添加",
@@ -3613,8 +3611,6 @@ export const translations: Record<Locale, Record<string, string>> = {
36133611
"settings.noCustomHeadersHint":
36143612
"Click to add one — common header names are suggested as you type.",
36153613
"settings.customHeaderReservedTitle": "Reserved header managed by the system",
3616-
"settings.showCustomHeaderValue": "Show header value",
3617-
"settings.hideCustomHeaderValue": "Hide header value",
36183614
"settings.manualAddModel": "Add manually",
36193615
"settings.customHeaderKeyPlaceholder": "Header name",
36203616
"settings.addCustomHeader": "Add",

crates/agent-gateway/web/src/pages/settings/ProvidersSection.tsx

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,6 @@ function ProviderModal({
402402
const [editingModel, setEditingModel] = useState<ModelEditDraft | null>(null);
403403
const [showApiKey, setShowApiKey] = useState(false);
404404
const [activePanel, setActivePanel] = useState<ProviderDialogPanel>("general");
405-
const [visibleHeaderValues, setVisibleHeaderValues] = useState<Set<number>>(new Set());
406405
const [headerValidationSubmitted, setHeaderValidationSubmitted] = useState(false);
407406
const [headerSuggest, setHeaderSuggest] = useState<{
408407
index: number;
@@ -764,26 +763,9 @@ function ProviderModal({
764763

765764
function removeCustomHeader(index: number) {
766765
setCustomHeaders((prev) => prev.filter((_, headerIndex) => headerIndex !== index));
767-
setVisibleHeaderValues((prev) => {
768-
const next = new Set<number>();
769-
for (const visibleIndex of prev) {
770-
if (visibleIndex < index) next.add(visibleIndex);
771-
if (visibleIndex > index) next.add(visibleIndex - 1);
772-
}
773-
return next;
774-
});
775766
setHeaderValidationSubmitted(false);
776767
}
777768

778-
function toggleCustomHeaderValue(index: number) {
779-
setVisibleHeaderValues((prev) => {
780-
const next = new Set(prev);
781-
if (next.has(index)) next.delete(index);
782-
else next.add(index);
783-
return next;
784-
});
785-
}
786-
787769
function openHeaderSuggest(index: number) {
788770
const input = headerKeyRefs.current[index];
789771
if (!input) return;
@@ -824,7 +806,6 @@ function ProviderModal({
824806
}
825807
const merged = mergeImportedCustomHeaders(customHeaders, parsed.headers);
826808
setCustomHeaders(merged.headers);
827-
setVisibleHeaderValues(new Set());
828809
setHeaderSuggest(null);
829810
setHeaderValidationSubmitted(false);
830811
setHeaderImportSummary({
@@ -1816,7 +1797,6 @@ function ProviderModal({
18161797
const issueTitle = issue ? customHeaderIssueMessage(issue, t) : undefined;
18171798
const valueIssue = issue === "invalid-value";
18181799
const keyIssue = issue !== null && !valueIssue;
1819-
const valueVisible = visibleHeaderValues.has(index);
18201800
const suggestOpen =
18211801
headerSuggest?.index === index && headerSuggestItems.length > 0;
18221802

@@ -1895,10 +1875,10 @@ function ProviderModal({
18951875
ref={(element) => {
18961876
headerValueRefs.current[index] = element;
18971877
}}
1898-
type={valueVisible ? "text" : "password"}
1878+
type="text"
18991879
value={header.value}
19001880
className={cn(
1901-
"h-10 w-full rounded-none border-0 bg-transparent pl-3 pr-[4.5rem] font-mono text-xs shadow-none focus-visible:ring-0",
1881+
"h-10 w-full rounded-none border-0 bg-transparent pl-3 pr-11 font-mono text-xs shadow-none focus-visible:ring-0",
19021882
valueIssue && "text-destructive",
19031883
)}
19041884
placeholder={t("settings.customHeaderValue")}
@@ -1918,29 +1898,6 @@ function ProviderModal({
19181898
}}
19191899
/>
19201900
<div className="settings-hover-actions absolute right-1.5 top-1/2 flex -translate-y-1/2 items-center gap-0.5 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 max-[720px]:opacity-100">
1921-
<Button
1922-
type="button"
1923-
variant="ghost"
1924-
size="icon"
1925-
className="h-7 w-7 rounded-md text-muted-foreground hover:text-foreground"
1926-
onClick={() => toggleCustomHeaderValue(index)}
1927-
title={
1928-
valueVisible
1929-
? t("settings.hideCustomHeaderValue")
1930-
: t("settings.showCustomHeaderValue")
1931-
}
1932-
aria-label={
1933-
valueVisible
1934-
? t("settings.hideCustomHeaderValue")
1935-
: t("settings.showCustomHeaderValue")
1936-
}
1937-
>
1938-
{valueVisible ? (
1939-
<EyeOff className="h-3.5 w-3.5" />
1940-
) : (
1941-
<Eye className="h-3.5 w-3.5" />
1942-
)}
1943-
</Button>
19441901
<Button
19451902
type="button"
19461903
variant="ghost"

crates/agent-gui/src/i18n/config.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,8 +1456,6 @@ export const translations: Record<Locale, Record<string, string>> = {
14561456
"settings.noCustomHeaders": "暂无自定义请求头",
14571457
"settings.noCustomHeadersHint": "点击此处新增,输入名称时会自动联想常用请求头。",
14581458
"settings.customHeaderReservedTitle": "保留头,由系统管理",
1459-
"settings.showCustomHeaderValue": "显示请求头值",
1460-
"settings.hideCustomHeaderValue": "隐藏请求头值",
14611459
"settings.manualAddModel": "手动添加",
14621460
"settings.customHeaderKeyPlaceholder": "请求头名称",
14631461
"settings.addCustomHeader": "添加",
@@ -3776,8 +3774,6 @@ export const translations: Record<Locale, Record<string, string>> = {
37763774
"settings.noCustomHeadersHint":
37773775
"Click to add one — common header names are suggested as you type.",
37783776
"settings.customHeaderReservedTitle": "Reserved header managed by the system",
3779-
"settings.showCustomHeaderValue": "Show header value",
3780-
"settings.hideCustomHeaderValue": "Hide header value",
37813777
"settings.manualAddModel": "Add manually",
37823778
"settings.customHeaderKeyPlaceholder": "Header name",
37833779
"settings.addCustomHeader": "Add",

crates/agent-gui/src/pages/settings/ProvidersSection.tsx

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,6 @@ function ProviderModal({
458458
);
459459
const [editingModel, setEditingModel] = useState<ModelEditDraft | null>(null);
460460
const [activePanel, setActivePanel] = useState<ProviderDialogPanel>("general");
461-
const [visibleHeaderValues, setVisibleHeaderValues] = useState<Set<number>>(new Set());
462461
const [headerValidationSubmitted, setHeaderValidationSubmitted] = useState(false);
463462
const [headerSuggest, setHeaderSuggest] = useState<{
464463
index: number;
@@ -820,26 +819,9 @@ function ProviderModal({
820819

821820
function removeCustomHeader(index: number) {
822821
setCustomHeaders((prev) => prev.filter((_, headerIndex) => headerIndex !== index));
823-
setVisibleHeaderValues((prev) => {
824-
const next = new Set<number>();
825-
for (const visibleIndex of prev) {
826-
if (visibleIndex < index) next.add(visibleIndex);
827-
if (visibleIndex > index) next.add(visibleIndex - 1);
828-
}
829-
return next;
830-
});
831822
setHeaderValidationSubmitted(false);
832823
}
833824

834-
function toggleCustomHeaderValue(index: number) {
835-
setVisibleHeaderValues((prev) => {
836-
const next = new Set(prev);
837-
if (next.has(index)) next.delete(index);
838-
else next.add(index);
839-
return next;
840-
});
841-
}
842-
843825
function openHeaderSuggest(index: number) {
844826
const input = headerKeyRefs.current[index];
845827
if (!input) return;
@@ -880,7 +862,6 @@ function ProviderModal({
880862
}
881863
const merged = mergeImportedCustomHeaders(customHeaders, parsed.headers);
882864
setCustomHeaders(merged.headers);
883-
setVisibleHeaderValues(new Set());
884865
setHeaderSuggest(null);
885866
setHeaderValidationSubmitted(false);
886867
setHeaderImportSummary({
@@ -1868,7 +1849,6 @@ function ProviderModal({
18681849
const issueTitle = issue ? customHeaderIssueMessage(issue, t) : undefined;
18691850
const valueIssue = issue === "invalid-value";
18701851
const keyIssue = issue !== null && !valueIssue;
1871-
const valueVisible = visibleHeaderValues.has(index);
18721852
const suggestOpen =
18731853
headerSuggest?.index === index && headerSuggestItems.length > 0;
18741854

@@ -1947,10 +1927,10 @@ function ProviderModal({
19471927
ref={(element) => {
19481928
headerValueRefs.current[index] = element;
19491929
}}
1950-
type={valueVisible ? "text" : "password"}
1930+
type="text"
19511931
value={header.value}
19521932
className={cn(
1953-
"h-10 w-full rounded-none border-0 bg-transparent pl-3 pr-[4.5rem] font-mono text-xs shadow-none focus-visible:ring-0",
1933+
"h-10 w-full rounded-none border-0 bg-transparent pl-3 pr-11 font-mono text-xs shadow-none focus-visible:ring-0",
19541934
valueIssue && "text-destructive",
19551935
)}
19561936
placeholder={t("settings.customHeaderValue")}
@@ -1970,29 +1950,6 @@ function ProviderModal({
19701950
}}
19711951
/>
19721952
<div className="settings-hover-actions absolute right-1.5 top-1/2 flex -translate-y-1/2 items-center gap-0.5 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 max-[720px]:opacity-100">
1973-
<Button
1974-
type="button"
1975-
variant="ghost"
1976-
size="icon"
1977-
className="h-7 w-7 rounded-md text-muted-foreground hover:text-foreground"
1978-
onClick={() => toggleCustomHeaderValue(index)}
1979-
title={
1980-
valueVisible
1981-
? t("settings.hideCustomHeaderValue")
1982-
: t("settings.showCustomHeaderValue")
1983-
}
1984-
aria-label={
1985-
valueVisible
1986-
? t("settings.hideCustomHeaderValue")
1987-
: t("settings.showCustomHeaderValue")
1988-
}
1989-
>
1990-
{valueVisible ? (
1991-
<EyeOff className="h-3.5 w-3.5" />
1992-
) : (
1993-
<Eye className="h-3.5 w-3.5" />
1994-
)}
1995-
</Button>
19961953
<Button
19971954
type="button"
19981955
variant="ghost"

0 commit comments

Comments
 (0)