Repository navigation
feat(settings): persist headroomUrl for the Headroom proxy - #12487
Merged
diegosouzapw merged 2 commits intoSep 3, 2026
Merged
Conversation
4 of 5 tasks
Status and start already read settings.headroomUrl, but PATCH stripped the key because it was missing from updateSettingsSchema. Keep the URL in settings, add a Settings > Advanced card, and refuse to spawn against a non-loopback URL (existing start route). Signed-off-by: Minxi Hou <houminxi@gmail.com>
HouMinXi
force-pushed
the
feat/12306-headroom-url
branch
from
September 3, 2026 12:37
aedc39c to
13fec05
Compare
Contributor
Author
|
Rebased onto Upstream retired |
react-hooks/set-state-in-effect flagged the mount fetch. Load settings and status in an async continuation. Fill Vietnamese Headroom strings so i18n-vi-completeness no longer sees __MISSING__ sentinels.
diegosouzapw
merged commit Sep 3, 2026
35caeb3
into
diegosouzapw:release/v3.8.51
14 of 16 checks passed
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…apw#12487) Validado em lote numa worktree combinada com os 9 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo, `check:provider-consistency` OK (273 entradas REGISTRY, **356** providers canônicos), `check-docs-counts-sync` exit 0 e **300/300** nos testes que a leva toca. O crescimento de arquivo que os PRs empilham uns sobre os outros foi rebaselinado num único registro datado (`_rebaseline_2026_09_03_houminxi_batch`), com a decomposição por arquivo: `providers/page.tsx` +18 (import CSV do diegosouzapw#12504 + busca do diegosouzapw#12495 no mesmo painel), `accountFallback.ts` +6 (o diegosouzapw#12566 sobre o rebaseline que o diegosouzapw#12590 já registrou — os dois tocam `checkFallbackError`) e `chatCore.ts` +3 (invalidez de cache de quota no 429 do diegosouzapw#12325). As violações restantes (`codex.ts`, `stream.ts`) foram medidas também no tip puro e são drift da base, não desta leva.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Settings currently drops
headroomUrlon PATCH because the field is missing fromupdateSettingsSchema. Status and start already read that key, so a custom Headroom URL never survives a save.This PR:
headroomUrlto the settings schema (empty =HEADROOM_URL/ localhost:8787; whitespace-only trims to empty; http(s) only; max 500).javascript:/file:/data:/ malformedhttp://viaisHttpUrl.Closes #12306
Test plan
20/20 pass. Also checked: drop the trim pipe → whitespace-only test fails; drop the
saveAc.current === acguard → source assertion fails.Notes for reviewers
cliproxyapi_urlnext to the new field still usesz.string().url()with no http(s) refine. That line is from v3.8.4 (b91ffa7f7); not touched here..url()plusisHttpUrlis layered on purpose: Zod's URL parser still acceptsjavascript:; the refine is the scheme gate used byprobeProxyRunning(fetch(${url}/health)).settingSaveFailed/settingSaved. No new locale strings required beyond the card copy already in this commit.Not in this PR