GitNexus/gitnexus-web/test/unit
samuel mbabhazi 0f3bad23b9
feat(web): resolve a root-relative GITNEXUS_BACKEND_URL against the page origin (#3640)
* feat(web): resolve a root-relative GITNEXUS_BACKEND_URL against the page origin

A GITNEXUS_BACKEND_URL of `/` (or `/prefix`) is injected as-is, and the
web client resolves it against the origin that served the page, so one
gitnexus-web deployment reaches its API on every hostname a reverse
proxy gives it. Protocol-relative values are left to the URL check and
rejected. Documents the two ways to route /api/* behind a proxy.

Closes #3593

* fix(web): reject a backslash-prefixed same-origin path

The URL parser reads a backslash as a slash, so `/\host` resolved against
the page origin became `http://host/`, an origin change. Both the server
check and the client resolution now treat it like `//host`.

* fix(web): keep a configured base ending in /api, and drop the unsupported direct route

normalizeServerUrl stripped a trailing /api from every URL, so a deployment
configured with GITNEXUS_BACKEND_URL=/proxy/api passed health and discovery
and then connected to /proxy/repo. The deployment's own base is now kept as
configured; the /api cleanup stays for hand-entered URLs. A regression covers
health, discovery and repository selection under /proxy/api.

The README no longer offers routing /api/* straight to `gitnexus serve` on a
public hostname: serve refuses to start with GITNEXUS_PUBLIC_ORIGIN set until
it has authentication of its own.

* fix(web): keep only a same-origin base as configured

The bypass in normalizeServerUrl matched any injected default, so an
absolute GITNEXUS_BACKEND_URL ending in /api would have produced a
doubled /api segment, and one carrying credentials would have kept them.
Only a root-relative deployment base is kept now; it is resolved from the
page origin, so it has neither. Absolute injected URLs are normalized as
before.
2026-10-24 08:45:24 +01:00
..
access-token-prompt.test.tsx feat(render): add one-click deploy to render support (#2804) 2026-08-06 00:19:44 +00:00
agent-abort.test.ts feat: refresh MiniMax model and endpoint configuration (#2780) 2026-08-11 18:11:47 +00:00
agent-history.test.ts feat: refresh MiniMax model and endpoint configuration (#2780) 2026-08-11 18:11:47 +00:00
agent-prompt.test.ts fix(server,web): honor the grep tool contract — real regex, fileFilter, caseSensitive (#3109) 2026-08-31 20:43:28 +01:00
backend-client-auth.test.ts fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
backend-client-grep.test.ts fix(server,web): honor the grep tool contract — real regex, fileFilter, caseSensitive (#3109) 2026-08-31 20:43:28 +01:00
backend-client-repo-identity.test.ts fix(web): use repo path identity in switcher (#2420) 2026-07-11 11:43:47 +01:00
backend-client-retry.test.ts fix(ip): Scope write-route origin guard to server's own bound host (#2172) 2026-06-13 09:24:03 +01:00
bug-fixes.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
code-panel-lines.test.ts fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
code-references-panel.test.tsx fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
constants.test.ts feat(indexing): add Objective-C semantic indexing support (#3179) 2026-09-09 09:40:21 +00:00
embedding-auto-start.test.ts feat(i18n): make web and CLI language-aware (#1748) 2026-05-23 06:14:24 +01:00
embedding-start-failure.test.ts fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
execution-dashboard.test.tsx fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
filter-panel.test.ts feat(indexing): add Objective-C semantic indexing support (#3179) 2026-09-09 09:40:21 +00:00
graph-load-decision.test.ts fix(web): chat-only mode for large projects to prevent WebUI hang (#2178) (#2185) 2026-06-13 11:07:58 +01:00
graph.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
grep-tool.test.ts fix(server,web): honor the grep tool contract — real regex, fileFilter, caseSensitive (#3109) 2026-08-31 20:43:28 +01:00
header.test.tsx fix(web): use repo path identity in switcher (#2420) 2026-07-11 11:43:47 +01:00
heartbeat.test.ts feat(render): add one-click deploy to render support (#2804) 2026-08-06 00:19:44 +00:00
i18n.test.tsx feat(i18n): make web and CLI language-aware (#1748) 2026-05-23 06:14:24 +01:00
impact-tool.test.ts fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
initialize-agent-identity.test.tsx fix(web): use repo path identity in switcher (#2420) 2026-07-11 11:43:47 +01:00
load-graph-anyway.test.tsx fix(web): use repo path identity in switcher (#2420) 2026-07-11 11:43:47 +01:00
mermaid-generator.test.ts ci: E2E workflow, web typecheck job, pre-commit hook, test suite (#486) 2026-03-24 06:01:08 +00:00
path-resolution.test.ts fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
perf-optimizations.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
repo-analyzer-complete-identity.test.tsx fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
repo-analyzer-folder-drop.test.tsx feat(web): drop a folder onto the analyzer to upload it (#3315) 2026-09-20 10:12:54 +01:00
repo-analyzer-upload-race.test.tsx fix(web): show origin-blocked analyze guidance (#2568) 2026-07-20 08:15:16 +01:00
security-guards.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
server-connection.test.ts feat(web): resolve a root-relative GITNEXUS_BACKEND_URL against the page origin (#3640) 2026-10-24 08:45:24 +01:00
settings-panel-token.test.tsx feat(render): add one-click deploy to render support (#2804) 2026-08-06 00:19:44 +00:00
settings-service.test.ts feat: refresh MiniMax model and endpoint configuration (#2780) 2026-08-11 18:11:47 +00:00
switch-repo-url.test.tsx fix(web): use repo path identity in switcher (#2420) 2026-07-11 11:43:47 +01:00
test-setup-storage.test.ts chore(deps): consolidate ten Dependabot updates (#3554) 2026-10-10 16:16:16 +00:00
tsconfig-react.test.ts chore: compile first-party packages with TypeScript 7 (#3311) 2026-09-17 22:16:00 +01:00
update-banner.test.tsx feat: notify users when a newer gitnexus version is available (#3175) 2026-09-04 18:50:03 +01:00
url-restore.test.ts fix(web): use repo path identity in switcher (#2420) 2026-07-11 11:43:47 +01:00
use-auto-scroll.test.tsx fix(extractors): resolve 3 silent contract mis-resolution bugs (#793) (#817) 2026-04-14 08:03:02 +01:00
utils.test.ts ci: E2E workflow, web typecheck job, pre-commit hook, test suite (#486) 2026-03-24 06:01:08 +00:00