diff --git a/pyproject.toml b/pyproject.toml index e58644f..1e6ee08 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "codefa" -version = "1.2.51" +version = "1.2.53" description = "Local proxy connecting coding agents to OpenAI-compatible AI providers" readme = "README.md" requires-python = ">=3.14.0" diff --git a/src/codefa/api/admin_static/admin.css b/src/codefa/api/admin_static/admin.css index 9608809..ab46b9a 100755 --- a/src/codefa/api/admin_static/admin.css +++ b/src/codefa/api/admin_static/admin.css @@ -163,15 +163,13 @@ textarea { display: flex; align-items: center; justify-content: center; - width: 40px; - height: 40px; - border-radius: 50%; + height: 32px; + width: auto; background: transparent; border: none; box-shadow: none; padding: 0; flex-shrink: 0; - overflow: hidden; transition: transform var(--transition-fast); } @@ -180,10 +178,10 @@ textarea { } .brand-logo-img { - width: 100%; - height: 100%; - object-fit: cover; - border-radius: 50%; + height: 32px; + width: auto; + max-width: 36px; + object-fit: contain; display: block; } @@ -1092,8 +1090,7 @@ html[data-theme="light"] .action-bar { } .brand-mark { - width: 36px; - height: 36px; + height: 28px; } .main { diff --git a/src/codefa/api/admin_static/admin.js b/src/codefa/api/admin_static/admin.js index c433edd..bfc08ae 100755 --- a/src/codefa/api/admin_static/admin.js +++ b/src/codefa/api/admin_static/admin.js @@ -453,9 +453,16 @@ function inputForField(field) { input.type = field.type === "number" ? "number" : "text"; if (field.type === "secret") { input.type = "password"; - input.placeholder = field.configured - ? "Configured - enter a new value to replace" - : "Not configured"; + const isProxy = (field.key || "").endsWith("_PROXY"); + if (isProxy) { + input.placeholder = field.configured + ? "Configured - enter new proxy or leave empty" + : "Optional - leave empty for direct connection"; + } else { + input.placeholder = field.configured + ? "Configured - enter a new API Key to replace" + : "Not configured - enter API Key"; + } input.value = ""; input.autocomplete = "off"; } else { diff --git a/src/codefa/config/admin/provider_manifest.py b/src/codefa/config/admin/provider_manifest.py index c882fc2..b3706cc 100755 --- a/src/codefa/config/admin/provider_manifest.py +++ b/src/codefa/config/admin/provider_manifest.py @@ -237,12 +237,16 @@ def _proxy_field_specs() -> tuple[dict[str, Any], ...]: specs.append( { "key": _settings_env_key(descriptor.proxy_attr), - "label": f"{descriptor.display_name} Proxy", + "label": f"{descriptor.display_name} Proxy (Optional)", "section_id": "providers", "field_type": "secret", "settings_attr": descriptor.proxy_attr, "secret": True, "advanced": True, + "description": ( + f"Optional HTTP/SOCKS5 proxy URL for {descriptor.display_name} " + "(leave empty for direct connection)." + ), } ) return tuple(specs) diff --git a/uv.lock b/uv.lock index 2007aad..cf33560 100755 --- a/uv.lock +++ b/uv.lock @@ -272,7 +272,7 @@ wheels = [ [[package]] name = "codefa" -version = "1.2.51" +version = "1.2.53" source = { editable = "." } dependencies = [ { name = "aiohttp" },