Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions crates/agent-gateway/web/src/i18n/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1384,8 +1384,6 @@ export const translations: Record<Locale, Record<string, string>> = {
"settings.noCustomHeaders": "暂无自定义请求头",
"settings.noCustomHeadersHint": "点击此处新增,输入名称时会自动联想常用请求头。",
"settings.customHeaderReservedTitle": "保留头,由系统管理",
"settings.showCustomHeaderValue": "显示请求头值",
"settings.hideCustomHeaderValue": "隐藏请求头值",
"settings.manualAddModel": "手动添加",
"settings.customHeaderKeyPlaceholder": "请求头名称",
"settings.addCustomHeader": "添加",
Expand Down Expand Up @@ -3610,8 +3608,6 @@ export const translations: Record<Locale, Record<string, string>> = {
"settings.noCustomHeadersHint":
"Click to add one — common header names are suggested as you type.",
"settings.customHeaderReservedTitle": "Reserved header managed by the system",
"settings.showCustomHeaderValue": "Show header value",
"settings.hideCustomHeaderValue": "Hide header value",
"settings.manualAddModel": "Add manually",
"settings.customHeaderKeyPlaceholder": "Header name",
"settings.addCustomHeader": "Add",
Expand Down
47 changes: 2 additions & 45 deletions crates/agent-gateway/web/src/pages/settings/ProvidersSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,6 @@ function ProviderModal({
const [editingModel, setEditingModel] = useState<ModelEditDraft | null>(null);
const [showApiKey, setShowApiKey] = useState(false);
const [activePanel, setActivePanel] = useState<ProviderDialogPanel>("general");
const [visibleHeaderValues, setVisibleHeaderValues] = useState<Set<number>>(new Set());
const [headerValidationSubmitted, setHeaderValidationSubmitted] = useState(false);
const [headerSuggest, setHeaderSuggest] = useState<{
index: number;
Expand Down Expand Up @@ -764,26 +763,9 @@ function ProviderModal({

function removeCustomHeader(index: number) {
setCustomHeaders((prev) => prev.filter((_, headerIndex) => headerIndex !== index));
setVisibleHeaderValues((prev) => {
const next = new Set<number>();
for (const visibleIndex of prev) {
if (visibleIndex < index) next.add(visibleIndex);
if (visibleIndex > index) next.add(visibleIndex - 1);
}
return next;
});
setHeaderValidationSubmitted(false);
}

function toggleCustomHeaderValue(index: number) {
setVisibleHeaderValues((prev) => {
const next = new Set(prev);
if (next.has(index)) next.delete(index);
else next.add(index);
return next;
});
}

function openHeaderSuggest(index: number) {
const input = headerKeyRefs.current[index];
if (!input) return;
Expand Down Expand Up @@ -824,7 +806,6 @@ function ProviderModal({
}
const merged = mergeImportedCustomHeaders(customHeaders, parsed.headers);
setCustomHeaders(merged.headers);
setVisibleHeaderValues(new Set());
setHeaderSuggest(null);
setHeaderValidationSubmitted(false);
setHeaderImportSummary({
Expand Down Expand Up @@ -1816,7 +1797,6 @@ function ProviderModal({
const issueTitle = issue ? customHeaderIssueMessage(issue, t) : undefined;
const valueIssue = issue === "invalid-value";
const keyIssue = issue !== null && !valueIssue;
const valueVisible = visibleHeaderValues.has(index);
const suggestOpen =
headerSuggest?.index === index && headerSuggestItems.length > 0;

Expand Down Expand Up @@ -1895,10 +1875,10 @@ function ProviderModal({
ref={(element) => {
headerValueRefs.current[index] = element;
}}
type={valueVisible ? "text" : "password"}
type="text"
value={header.value}
className={cn(
"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",
"h-10 w-full rounded-none border-0 bg-transparent pl-3 pr-11 font-mono text-xs shadow-none focus-visible:ring-0",
valueIssue && "text-destructive",
)}
placeholder={t("settings.customHeaderValue")}
Expand All @@ -1918,29 +1898,6 @@ function ProviderModal({
}}
/>
<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">
<Button
type="button"
variant="ghost"
size="icon"
className="h-7 w-7 rounded-md text-muted-foreground hover:text-foreground"
onClick={() => toggleCustomHeaderValue(index)}
title={
valueVisible
? t("settings.hideCustomHeaderValue")
: t("settings.showCustomHeaderValue")
}
aria-label={
valueVisible
? t("settings.hideCustomHeaderValue")
: t("settings.showCustomHeaderValue")
}
>
{valueVisible ? (
<EyeOff className="h-3.5 w-3.5" />
) : (
<Eye className="h-3.5 w-3.5" />
)}
</Button>
<Button
type="button"
variant="ghost"
Expand Down
4 changes: 0 additions & 4 deletions crates/agent-gui/src/i18n/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1454,8 +1454,6 @@ export const translations: Record<Locale, Record<string, string>> = {
"settings.noCustomHeaders": "暂无自定义请求头",
"settings.noCustomHeadersHint": "点击此处新增,输入名称时会自动联想常用请求头。",
"settings.customHeaderReservedTitle": "保留头,由系统管理",
"settings.showCustomHeaderValue": "显示请求头值",
"settings.hideCustomHeaderValue": "隐藏请求头值",
"settings.manualAddModel": "手动添加",
"settings.customHeaderKeyPlaceholder": "请求头名称",
"settings.addCustomHeader": "添加",
Expand Down Expand Up @@ -3773,8 +3771,6 @@ export const translations: Record<Locale, Record<string, string>> = {
"settings.noCustomHeadersHint":
"Click to add one — common header names are suggested as you type.",
"settings.customHeaderReservedTitle": "Reserved header managed by the system",
"settings.showCustomHeaderValue": "Show header value",
"settings.hideCustomHeaderValue": "Hide header value",
"settings.manualAddModel": "Add manually",
"settings.customHeaderKeyPlaceholder": "Header name",
"settings.addCustomHeader": "Add",
Expand Down
47 changes: 2 additions & 45 deletions crates/agent-gui/src/pages/settings/ProvidersSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,6 @@ function ProviderModal({
);
const [editingModel, setEditingModel] = useState<ModelEditDraft | null>(null);
const [activePanel, setActivePanel] = useState<ProviderDialogPanel>("general");
const [visibleHeaderValues, setVisibleHeaderValues] = useState<Set<number>>(new Set());
const [headerValidationSubmitted, setHeaderValidationSubmitted] = useState(false);
const [headerSuggest, setHeaderSuggest] = useState<{
index: number;
Expand Down Expand Up @@ -820,26 +819,9 @@ function ProviderModal({

function removeCustomHeader(index: number) {
setCustomHeaders((prev) => prev.filter((_, headerIndex) => headerIndex !== index));
setVisibleHeaderValues((prev) => {
const next = new Set<number>();
for (const visibleIndex of prev) {
if (visibleIndex < index) next.add(visibleIndex);
if (visibleIndex > index) next.add(visibleIndex - 1);
}
return next;
});
setHeaderValidationSubmitted(false);
}

function toggleCustomHeaderValue(index: number) {
setVisibleHeaderValues((prev) => {
const next = new Set(prev);
if (next.has(index)) next.delete(index);
else next.add(index);
return next;
});
}

function openHeaderSuggest(index: number) {
const input = headerKeyRefs.current[index];
if (!input) return;
Expand Down Expand Up @@ -880,7 +862,6 @@ function ProviderModal({
}
const merged = mergeImportedCustomHeaders(customHeaders, parsed.headers);
setCustomHeaders(merged.headers);
setVisibleHeaderValues(new Set());
setHeaderSuggest(null);
setHeaderValidationSubmitted(false);
setHeaderImportSummary({
Expand Down Expand Up @@ -1868,7 +1849,6 @@ function ProviderModal({
const issueTitle = issue ? customHeaderIssueMessage(issue, t) : undefined;
const valueIssue = issue === "invalid-value";
const keyIssue = issue !== null && !valueIssue;
const valueVisible = visibleHeaderValues.has(index);
const suggestOpen =
headerSuggest?.index === index && headerSuggestItems.length > 0;

Expand Down Expand Up @@ -1947,10 +1927,10 @@ function ProviderModal({
ref={(element) => {
headerValueRefs.current[index] = element;
}}
type={valueVisible ? "text" : "password"}
type="text"
value={header.value}
className={cn(
"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",
"h-10 w-full rounded-none border-0 bg-transparent pl-3 pr-11 font-mono text-xs shadow-none focus-visible:ring-0",
valueIssue && "text-destructive",
)}
placeholder={t("settings.customHeaderValue")}
Expand All @@ -1970,29 +1950,6 @@ function ProviderModal({
}}
/>
<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">
<Button
type="button"
variant="ghost"
size="icon"
className="h-7 w-7 rounded-md text-muted-foreground hover:text-foreground"
onClick={() => toggleCustomHeaderValue(index)}
title={
valueVisible
? t("settings.hideCustomHeaderValue")
: t("settings.showCustomHeaderValue")
}
aria-label={
valueVisible
? t("settings.hideCustomHeaderValue")
: t("settings.showCustomHeaderValue")
}
>
{valueVisible ? (
<EyeOff className="h-3.5 w-3.5" />
) : (
<Eye className="h-3.5 w-3.5" />
)}
</Button>
<Button
type="button"
variant="ghost"
Expand Down
Loading