diff --git a/nextcloud_mcp_server/auth/userinfo_routes.py b/nextcloud_mcp_server/auth/userinfo_routes.py index 50e17eb..ca33e2b 100644 --- a/nextcloud_mcp_server/auth/userinfo_routes.py +++ b/nextcloud_mcp_server/auth/userinfo_routes.py @@ -489,6 +489,16 @@ async def user_info_html(request: Request) -> HTMLResponse: str(request.url_for("oauth_logout")) if oauth_ctx else "/oauth/logout" ) + # Get Nextcloud host for generating links to apps (used by viz tab) + # Use public issuer URL if available (for browser-accessible links), + # otherwise fall back to NEXTCLOUD_HOST from settings + from nextcloud_mcp_server.config import get_settings + + settings = get_settings() + nextcloud_host_for_links = ( + os.getenv("NEXTCLOUD_PUBLIC_ISSUER_URL") or settings.nextcloud_host + ) + # Build host info HTML (BasicAuth only) host_info_html = "" if auth_mode == "basic": @@ -658,6 +668,115 @@ async def user_info_html(request: Request) -> HTMLResponse: + + + + + + - - -
-
-

Vector Visualization

-
+ +
+
+

Vector Visualization

+
Testing search algorithms on your indexed documents. User: {username}
-
+
-
+
-
-
+
+
@@ -252,12 +247,12 @@ async def vector_visualization_html(request: Request) -> HTMLResponse:
-
+
-
+
@@ -271,17 +266,17 @@ async def vector_visualization_html(request: Request) -> HTMLResponse:
- +
- +
- +
@@ -289,134 +284,44 @@ async def vector_visualization_html(request: Request) -> HTMLResponse:
-
-
- Executing search and computing PCA projection... +
+
+
+ Executing search and computing PCA projection... +
+
-
-
-

Search Results ()

-