diff --git a/CLAUDE.md b/CLAUDE.md
index 3f0a1c3..a2441f7 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -515,7 +515,7 @@ docker compose exec app php occ user_oidc:provider keycloak
docker compose exec app cat /var/www/html/data/nextcloud.log | jq | tail
# Filter by app
-docker compose exec app cat /var/www/html/data/nextcloud.log | jq 'select(.app == "astroglobe")' | tail
+docker compose exec app cat /var/www/html/data/nextcloud.log | jq 'select(.app == "astrolabe")' | tail
# Filter by log level (0=DEBUG, 1=INFO, 2=WARN, 3=ERROR, 4=FATAL)
docker compose exec app cat /var/www/html/data/nextcloud.log | jq 'select(.level >= 3)' | tail
diff --git a/app-hooks/post-installation/20-install-astroglobe-app.sh b/app-hooks/post-installation/20-install-astrolabe-app.sh
similarity index 57%
rename from app-hooks/post-installation/20-install-astroglobe-app.sh
rename to app-hooks/post-installation/20-install-astrolabe-app.sh
index a125c15..ba70720 100755
--- a/app-hooks/post-installation/20-install-astroglobe-app.sh
+++ b/app-hooks/post-installation/20-install-astrolabe-app.sh
@@ -2,32 +2,32 @@
set -euox pipefail
-echo "Installing and configuring Astroglobe app for testing..."
+echo "Installing and configuring Astrolabe app for testing..."
-# Check if development astroglobe app is mounted at /opt/apps/astroglobe
-if [ -d /opt/apps/astroglobe ]; then
- echo "Development astroglobe app found at /opt/apps/astroglobe"
+# Check if development astrolabe app is mounted at /opt/apps/astrolabe
+if [ -d /opt/apps/astrolabe ]; then
+ echo "Development astrolabe app found at /opt/apps/astrolabe"
- # Remove any existing astroglobe app in custom_apps (from app store or old symlink)
- if [ -e /var/www/html/custom_apps/astroglobe ]; then
- echo "Removing existing astroglobe in custom_apps..."
- rm -rf /var/www/html/custom_apps/astroglobe
+ # Remove any existing astrolabe app in custom_apps (from app store or old symlink)
+ if [ -e /var/www/html/custom_apps/astrolabe ]; then
+ echo "Removing existing astrolabe in custom_apps..."
+ rm -rf /var/www/html/custom_apps/astrolabe
fi
# Create symlink from custom_apps to the mounted development version
# Per Nextcloud docs: apps outside server root need symlinks in server root
- echo "Creating symlink: custom_apps/astroglobe -> /opt/apps/astroglobe"
- ln -sf /opt/apps/astroglobe /var/www/html/custom_apps/astroglobe
+ echo "Creating symlink: custom_apps/astrolabe -> /opt/apps/astrolabe"
+ ln -sf /opt/apps/astrolabe /var/www/html/custom_apps/astrolabe
- echo "Enabling astroglobe app from /opt/apps (development mode via symlink)"
- php /var/www/html/occ app:enable astroglobe
-elif [ -d /var/www/html/custom_apps/astroglobe ]; then
- echo "astroglobe app directory found in custom_apps (already installed)"
- php /var/www/html/occ app:enable astroglobe
+ echo "Enabling astrolabe app from /opt/apps (development mode via symlink)"
+ php /var/www/html/occ app:enable astrolabe
+elif [ -d /var/www/html/custom_apps/astrolabe ]; then
+ echo "astrolabe app directory found in custom_apps (already installed)"
+ php /var/www/html/occ app:enable astrolabe
else
- echo "astroglobe app not found, installing from app store..."
- php /var/www/html/occ app:install astroglobe
- php /var/www/html/occ app:enable astroglobe
+ echo "astrolabe app not found, installing from app store..."
+ php /var/www/html/occ app:install astrolabe
+ php /var/www/html/occ app:enable astrolabe
fi
# Configure MCP server URLs in Nextcloud system config
@@ -36,14 +36,14 @@ fi
php /var/www/html/occ config:system:set mcp_server_url --value='http://mcp-oauth:8001'
php /var/www/html/occ config:system:set mcp_server_public_url --value='http://localhost:8001'
-# Create OAuth client for Astroglobe app
+# Create OAuth client for Astrolabe app
# The resource_url MUST match what the MCP server expects as token audience
# This allows tokens from this client to be validated by MCP server's UnifiedTokenVerifier
MCP_CLIENT_ID="nextcloudMcpServerUIPublicClient"
MCP_RESOURCE_URL="http://localhost:8001"
-MCP_REDIRECT_URI="http://localhost:8080/apps/astroglobe/oauth/callback"
+MCP_REDIRECT_URI="http://localhost:8080/apps/astrolabe/oauth/callback"
-echo "Configuring OAuth client for Astroglobe..."
+echo "Configuring OAuth client for Astrolabe..."
# Check if client already exists
if php /var/www/html/occ oidc:list 2>/dev/null | grep -q "$MCP_CLIENT_ID"; then
@@ -54,7 +54,7 @@ fi
# Create OAuth client with correct resource_url for MCP server audience
echo "Creating OAuth confidential client with resource_url=$MCP_RESOURCE_URL"
CLIENT_OUTPUT=$(php /var/www/html/occ oidc:create \
- "Astroglobe" \
+ "Astrolabe" \
"$MCP_REDIRECT_URI" \
--client_id="$MCP_CLIENT_ID" \
--type=confidential \
@@ -69,16 +69,16 @@ echo "$CLIENT_OUTPUT"
CLIENT_SECRET=$(echo "$CLIENT_OUTPUT" | php -r 'echo json_decode(file_get_contents("php://stdin"), true)["client_secret"] ?? "";')
if [ -n "$CLIENT_SECRET" ]; then
- echo "Configuring Astroglobe client secret in system config..."
- php /var/www/html/occ config:system:set astroglobe_client_secret --value="$CLIENT_SECRET"
+ echo "Configuring Astrolabe client secret in system config..."
+ php /var/www/html/occ config:system:set astrolabe_client_secret --value="$CLIENT_SECRET"
echo "✓ Client secret configured: ${CLIENT_SECRET:0:8}..."
else
echo "⚠ Warning: Could not extract client_secret from OIDC client creation"
fi
# Configure OAuth client ID in system config
-echo "Configuring Astroglobe client ID in system config..."
-php /var/www/html/occ config:system:set astroglobe_client_id --value="$MCP_CLIENT_ID"
+echo "Configuring Astrolabe client ID in system config..."
+php /var/www/html/occ config:system:set astrolabe_client_id --value="$MCP_CLIENT_ID"
echo "✓ Client ID configured: $MCP_CLIENT_ID"
-echo "Astroglobe app installed and configured successfully"
+echo "Astrolabe app installed and configured successfully"
diff --git a/docker-compose.yml b/docker-compose.yml
index 1342c1b..bec4ad2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -35,7 +35,7 @@ services:
# Mount OIDC development directory outside /var/www/html to avoid rsync conflicts
# The post-installation hook will register /opt/apps as an additional app directory
#- ./third_party:/opt/apps:ro
- - ./third_party/astroglobe:/opt/apps/astroglobe:ro
+ - ./third_party/astrolabe:/opt/apps/astrolabe:ro
environment:
- NEXTCLOUD_TRUSTED_DOMAINS=app
- NEXTCLOUD_ADMIN_USER=admin
diff --git a/docs/ADR-018-nextcloud-php-app-for-settings-ui.md b/docs/ADR-018-nextcloud-php-app-for-settings-ui.md
index 66f90a0..5960254 100644
--- a/docs/ADR-018-nextcloud-php-app-for-settings-ui.md
+++ b/docs/ADR-018-nextcloud-php-app-for-settings-ui.md
@@ -201,7 +201,7 @@ Claude Desktop → MCP Server /mcp/sse endpoint
The MCP server supports three deployment modes, each with different authentication requirements for the three critical communication paths:
1. **External MCP Client → MCP Server** (e.g., Claude Desktop)
-2. **Astroglobe UI → MCP Server** (PHP app REST API calls)
+2. **Astrolabe UI → MCP Server** (PHP app REST API calls)
3. **MCP Server → Nextcloud** (background jobs, vector sync)
#### Mode 1: Basic Single-User (Development/Simple Deployments)
@@ -218,7 +218,7 @@ NEXTCLOUD_PASSWORD=admin_password
| Communication Path | Method |
|-------------------|--------|
| MCP Client → Server | None (assumes single user) |
-| Astroglobe UI → Server | None (uses env credentials) |
+| Astrolabe UI → Server | None (uses env credentials) |
| Server → Nextcloud | BasicAuth from environment |
**Use Cases:**
@@ -244,7 +244,7 @@ DEPLOYMENT_MODE=basic_multiuser
| Communication Path | Method |
|-------------------|--------|
| MCP Client → Server | BasicAuth with Nextcloud app password |
-| Astroglobe UI → Server | BasicAuth with Nextcloud app password |
+| Astrolabe UI → Server | BasicAuth with Nextcloud app password |
| Server → Nextcloud | Pass-through client's credentials |
**Architecture:**
@@ -360,7 +360,7 @@ Users generate app passwords in Nextcloud settings:
}
```
-**Astroglobe UI in BasicAuth Multi-User:**
+**Astrolabe UI in BasicAuth Multi-User:**
The PHP app prompts users to save their app password:
@@ -373,11 +373,11 @@ public function search(string $query, array $options = []): array {
// Get user's app password from settings
$appPassword = $this->config->getUserValue(
- $userId, 'astroglobe', 'app_password', ''
+ $userId, 'astrolabe', 'app_password', ''
);
if (empty($appPassword)) {
- return ['error' => 'Please configure app password in Astroglobe settings'];
+ return ['error' => 'Please configure app password in Astrolabe settings'];
}
$response = $this->httpClient->post(
@@ -453,14 +453,14 @@ ENABLE_OFFLINE_ACCESS=true # For background jobs
| Communication Path | Method |
|-------------------|--------|
| MCP Client → Server | OAuth Bearer token (PKCE flow) |
-| Astroglobe UI → Server | OAuth Bearer token (PKCE flow) |
+| Astrolabe UI → Server | OAuth Bearer token (PKCE flow) |
| Server → Nextcloud | Token exchange OR refresh token (Flow 2) |
**Architecture:**
```
┌─────────────────────────────────────────────────────┐
-│ MCP Client / Astroglobe UI │
+│ MCP Client / Astrolabe UI │
└──────────────────────┬──────────────────────────────┘
│ PKCE OAuth Flow
▼
@@ -512,7 +512,7 @@ Choose deployment mode based on requirements:
| **Multi-user support** | ❌ | ✅ | ✅ |
| **Per-user identity** | ❌ | ✅ | ✅ |
| **External MCP clients** | ⚠️ No auth | ✅ BasicAuth | ✅ OAuth |
-| **Astroglobe UI access** | ✅ | ✅ | ✅ |
+| **Astrolabe UI access** | ✅ | ✅ | ✅ |
| **Background jobs** | ✅ | ✅ | ✅ |
| **OIDC required** | ❌ | ❌ | ✅ |
| **Token scoping** | ❌ | ❌ | ✅ |
@@ -1586,7 +1586,7 @@ MANAGEMENT_API_ENABLED=true # Required
**Proposed Architecture:**
```
-External MCP Client → Astroglobe PHP App (SSE proxy) → MCP Container
+External MCP Client → Astrolabe PHP App (SSE proxy) → MCP Container
```
**Pros:**
@@ -1629,11 +1629,11 @@ location /mcp/ {
- PHP is fundamentally ill-suited for SSE proxying (request-response vs streaming)
- Reverse proxy at web server layer is simpler, more performant, and standard practice
- No value added by PHP layer - authentication handled by container regardless
-- Rest API for Astroglobe UI is sufficient for internal NC integration
+- Rest API for Astrolabe UI is sufficient for internal NC integration
**Note:** This alternative would have made sense if it enabled new use cases. However:
1. **External MCP clients**: Work fine connecting directly to container (via reverse proxy)
-2. **Astroglobe UI**: Doesn't need MCP protocol - REST API sufficient
+2. **Astrolabe UI**: Doesn't need MCP protocol - REST API sufficient
3. **Authentication**: Solved by BasicAuth multi-user mode (pass-through) for non-OIDC deployments
The REST API + BasicAuth multi-user architecture achieves the same goals (multi-user access without OIDC) without the complexity of SSE proxying.
diff --git a/test-astroglobe.sh b/test-astroglobe.sh
deleted file mode 100755
index 6c12954..0000000
--- a/test-astroglobe.sh
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/bin/bash
-
-set -e
-
-echo "====================================="
-echo "Testing MCP Server UI App Installation"
-echo "====================================="
-
-cd "$(dirname "$0")"
-
-# Colors for output
-GREEN='\033[0;32m'
-RED='\033[0;31m'
-YELLOW='\033[1;33m'
-NC='\033[0m' # No Color
-
-echo -e "\n${YELLOW}Step 1: Stopping existing services...${NC}"
-docker compose down
-
-echo -e "\n${YELLOW}Step 2: Starting services...${NC}"
-docker compose up -d app mcp-oauth
-
-echo -e "\n${YELLOW}Step 3: Waiting for Nextcloud to be healthy...${NC}"
-timeout=180
-elapsed=0
-while ! docker compose exec -T app curl -f http://localhost/status.php 2>/dev/null | grep -q '"installed":true'; do
- if [ $elapsed -ge $timeout ]; then
- echo -e "${RED}ERROR: Nextcloud failed to become healthy within ${timeout}s${NC}"
- echo "Nextcloud logs:"
- docker compose logs app | tail -50
- exit 1
- fi
- echo "Waiting for Nextcloud... ($elapsed/$timeout)"
- sleep 5
- elapsed=$((elapsed + 5))
-done
-echo -e "${GREEN}✓ Nextcloud is healthy${NC}"
-
-echo -e "\n${YELLOW}Step 4: Checking if astroglobe app is enabled...${NC}"
-if docker compose exec -T app php /var/www/html/occ app:list | grep -A 1 "Enabled:" | grep -q "astroglobe"; then
- echo -e "${GREEN}✓ astroglobe app is enabled${NC}"
-else
- echo -e "${RED}✗ astroglobe app is NOT enabled${NC}"
- echo "Available apps:"
- docker compose exec -T app php /var/www/html/occ app:list
- exit 1
-fi
-
-echo -e "\n${YELLOW}Step 5: Checking app info...${NC}"
-docker compose exec -T app php /var/www/html/occ app:list | grep -A 5 astroglobe || true
-
-echo -e "\n${YELLOW}Step 6: Verifying MCP server URL configuration...${NC}"
-mcp_url=$(docker compose exec -T app php /var/www/html/occ config:system:get mcp_server_url || echo "NOT_SET")
-if [ "$mcp_url" = "http://mcp-oauth:8001" ]; then
- echo -e "${GREEN}✓ MCP server URL is configured correctly: $mcp_url${NC}"
-else
- echo -e "${RED}✗ MCP server URL is incorrect: $mcp_url${NC}"
- echo "Expected: http://mcp-oauth:8001"
-fi
-
-echo -e "\n${YELLOW}Step 7: Checking if symlink was created...${NC}"
-if docker compose exec -T app test -L /var/www/html/custom_apps/astroglobe; then
- echo -e "${GREEN}✓ Symlink exists at /var/www/html/custom_apps/astroglobe${NC}"
- docker compose exec -T app ls -la /var/www/html/custom_apps/astroglobe
-else
- echo -e "${RED}✗ Symlink does not exist${NC}"
-fi
-
-echo -e "\n${YELLOW}Step 8: Checking app structure...${NC}"
-docker compose exec -T app test -f /opt/apps/astroglobe/appinfo/info.xml && echo -e "${GREEN}✓ info.xml exists${NC}" || echo -e "${RED}✗ info.xml missing${NC}"
-docker compose exec -T app test -f /opt/apps/astroglobe/lib/Controller/OAuthController.php && echo -e "${GREEN}✓ OAuthController.php exists${NC}" || echo -e "${RED}✗ OAuthController.php missing${NC}"
-docker compose exec -T app test -f /opt/apps/astroglobe/lib/Service/McpTokenStorage.php && echo -e "${GREEN}✓ McpTokenStorage.php exists${NC}" || echo -e "${RED}✗ McpTokenStorage.php missing${NC}"
-docker compose exec -T app test -f /opt/apps/astroglobe/appinfo/routes.php && echo -e "${GREEN}✓ routes.php exists${NC}" || echo -e "${RED}✗ routes.php missing${NC}"
-
-echo -e "\n${YELLOW}Step 9: Checking if admin can access settings...${NC}"
-# Try to access the admin settings page (this will check if the app loads without errors)
-if docker compose exec -T app curl -s -u admin:admin http://localhost/index.php/settings/admin/mcp >/dev/null 2>&1; then
- echo -e "${GREEN}✓ Admin settings page is accessible${NC}"
-else
- echo -e "${YELLOW}⚠ Admin settings page returned an error (may be expected if not fully configured)${NC}"
-fi
-
-echo -e "\n${YELLOW}Step 10: Checking Nextcloud logs for errors...${NC}"
-error_count=$(docker compose exec -T app grep -c "astroglobe" /var/www/html/data/nextcloud.log 2>/dev/null || echo "0")
-if [ "$error_count" -gt 0 ]; then
- echo -e "${YELLOW}⚠ Found $error_count log entries mentioning astroglobe${NC}"
- docker compose exec -T app grep "astroglobe" /var/www/html/data/nextcloud.log | tail -10 || true
-else
- echo -e "${GREEN}✓ No errors in Nextcloud logs${NC}"
-fi
-
-echo -e "\n${GREEN}====================================="
-echo "Testing Complete!"
-echo "=====================================${NC}"
-echo ""
-echo "Next steps:"
-echo "1. Open http://localhost:8080 in your browser"
-echo "2. Login with admin/admin"
-echo "3. Go to Settings → Personal → MCP Server"
-echo "4. You should see the OAuth authorization UI"
-echo ""
-echo "To view logs:"
-echo " docker compose logs -f app"
-echo ""
-echo "To access occ commands:"
-echo " docker compose exec app php /var/www/html/occ app:list"
diff --git a/tests/server/oauth/test_nc_php_app_debug.py b/tests/server/oauth/test_nc_php_app_debug.py
index acdaea3..ad94078 100644
--- a/tests/server/oauth/test_nc_php_app_debug.py
+++ b/tests/server/oauth/test_nc_php_app_debug.py
@@ -52,7 +52,7 @@ async def test_capture_settings_page(browser):
"Authorization Required",
"MCP Server",
"Sign In Again",
- "astroglobe",
+ "astrolabe",
]
for check in checks:
diff --git a/tests/server/oauth/test_nc_php_app_oauth.py b/tests/server/oauth/test_nc_php_app_oauth.py
index db845de..4f953f4 100644
--- a/tests/server/oauth/test_nc_php_app_oauth.py
+++ b/tests/server/oauth/test_nc_php_app_oauth.py
@@ -1,4 +1,4 @@
-"""Test OAuth authorization flow for Nextcloud PHP app (astroglobe).
+"""Test OAuth authorization flow for Nextcloud PHP app (astrolabe).
Tests the complete PKCE OAuth flow from the NC PHP app perspective:
1. User navigates to personal settings
diff --git a/third_party/astroglobe/templates/index.php b/third_party/astroglobe/templates/index.php
deleted file mode 100644
index 4af6f34..0000000
--- a/third_party/astroglobe/templates/index.php
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/third_party/astroglobe/.eslintrc.cjs b/third_party/astrolabe/.eslintrc.cjs
similarity index 100%
rename from third_party/astroglobe/.eslintrc.cjs
rename to third_party/astrolabe/.eslintrc.cjs
diff --git a/third_party/astroglobe/.github/dependabot.yml b/third_party/astrolabe/.github/dependabot.yml
similarity index 100%
rename from third_party/astroglobe/.github/dependabot.yml
rename to third_party/astrolabe/.github/dependabot.yml
diff --git a/third_party/astroglobe/.github/workflows/block-unconventional-commits.yml b/third_party/astrolabe/.github/workflows/block-unconventional-commits.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/block-unconventional-commits.yml
rename to third_party/astrolabe/.github/workflows/block-unconventional-commits.yml
diff --git a/third_party/astroglobe/.github/workflows/fixup.yml b/third_party/astrolabe/.github/workflows/fixup.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/fixup.yml
rename to third_party/astrolabe/.github/workflows/fixup.yml
diff --git a/third_party/astroglobe/.github/workflows/lint-eslint.yml b/third_party/astrolabe/.github/workflows/lint-eslint.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/lint-eslint.yml
rename to third_party/astrolabe/.github/workflows/lint-eslint.yml
diff --git a/third_party/astroglobe/.github/workflows/lint-info-xml.yml b/third_party/astrolabe/.github/workflows/lint-info-xml.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/lint-info-xml.yml
rename to third_party/astrolabe/.github/workflows/lint-info-xml.yml
diff --git a/third_party/astroglobe/.github/workflows/lint-php-cs.yml b/third_party/astrolabe/.github/workflows/lint-php-cs.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/lint-php-cs.yml
rename to third_party/astrolabe/.github/workflows/lint-php-cs.yml
diff --git a/third_party/astroglobe/.github/workflows/lint-php.yml b/third_party/astrolabe/.github/workflows/lint-php.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/lint-php.yml
rename to third_party/astrolabe/.github/workflows/lint-php.yml
diff --git a/third_party/astroglobe/.github/workflows/lint-stylelint.yml b/third_party/astrolabe/.github/workflows/lint-stylelint.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/lint-stylelint.yml
rename to third_party/astrolabe/.github/workflows/lint-stylelint.yml
diff --git a/third_party/astroglobe/.github/workflows/node.yml b/third_party/astrolabe/.github/workflows/node.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/node.yml
rename to third_party/astrolabe/.github/workflows/node.yml
diff --git a/third_party/astroglobe/.github/workflows/npm-audit-fix.yml b/third_party/astrolabe/.github/workflows/npm-audit-fix.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/npm-audit-fix.yml
rename to third_party/astrolabe/.github/workflows/npm-audit-fix.yml
diff --git a/third_party/astroglobe/.github/workflows/openapi.yml b/third_party/astrolabe/.github/workflows/openapi.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/openapi.yml
rename to third_party/astrolabe/.github/workflows/openapi.yml
diff --git a/third_party/astroglobe/.github/workflows/psalm-matrix.yml b/third_party/astrolabe/.github/workflows/psalm-matrix.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/psalm-matrix.yml
rename to third_party/astrolabe/.github/workflows/psalm-matrix.yml
diff --git a/third_party/astroglobe/.github/workflows/update-nextcloud-ocp-approve-merge.yml b/third_party/astrolabe/.github/workflows/update-nextcloud-ocp-approve-merge.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/update-nextcloud-ocp-approve-merge.yml
rename to third_party/astrolabe/.github/workflows/update-nextcloud-ocp-approve-merge.yml
diff --git a/third_party/astroglobe/.github/workflows/update-nextcloud-ocp-matrix.yml b/third_party/astrolabe/.github/workflows/update-nextcloud-ocp-matrix.yml
similarity index 100%
rename from third_party/astroglobe/.github/workflows/update-nextcloud-ocp-matrix.yml
rename to third_party/astrolabe/.github/workflows/update-nextcloud-ocp-matrix.yml
diff --git a/third_party/astroglobe/.gitignore b/third_party/astrolabe/.gitignore
similarity index 100%
rename from third_party/astroglobe/.gitignore
rename to third_party/astrolabe/.gitignore
diff --git a/third_party/astroglobe/.nvmrc b/third_party/astrolabe/.nvmrc
similarity index 100%
rename from third_party/astroglobe/.nvmrc
rename to third_party/astrolabe/.nvmrc
diff --git a/third_party/astroglobe/.php-cs-fixer.dist.php b/third_party/astrolabe/.php-cs-fixer.dist.php
similarity index 100%
rename from third_party/astroglobe/.php-cs-fixer.dist.php
rename to third_party/astrolabe/.php-cs-fixer.dist.php
diff --git a/third_party/astroglobe/CHANGELOG.md b/third_party/astrolabe/CHANGELOG.md
similarity index 100%
rename from third_party/astroglobe/CHANGELOG.md
rename to third_party/astrolabe/CHANGELOG.md
diff --git a/third_party/astroglobe/CODE_OF_CONDUCT.md b/third_party/astrolabe/CODE_OF_CONDUCT.md
similarity index 100%
rename from third_party/astroglobe/CODE_OF_CONDUCT.md
rename to third_party/astrolabe/CODE_OF_CONDUCT.md
diff --git a/third_party/astroglobe/LICENSE b/third_party/astrolabe/LICENSE
similarity index 100%
rename from third_party/astroglobe/LICENSE
rename to third_party/astrolabe/LICENSE
diff --git a/third_party/astroglobe/README.md b/third_party/astrolabe/README.md
similarity index 95%
rename from third_party/astroglobe/README.md
rename to third_party/astrolabe/README.md
index b370707..10111a4 100644
--- a/third_party/astroglobe/README.md
+++ b/third_party/astrolabe/README.md
@@ -63,9 +63,9 @@ NC PHP App → User's OAuth Token → MCP Server validates
### Manual Installation
-1. Clone or download this directory to `apps/astroglobe`
+1. Clone or download this directory to `apps/astrolabe`
2. Install dependencies: `composer install`
-3. Enable the app: `occ app:enable astroglobe`
+3. Enable the app: `occ app:enable astrolabe`
## Configuration
@@ -141,7 +141,7 @@ Located in: **Settings → Administration → MCP Server**
### Structure
```
-astroglobe/
+astrolabe/
├── lib/
│ ├── Controller/
│ │ ├── ApiController.php # Form handlers (revoke, etc.)
@@ -159,17 +159,17 @@ astroglobe/
│ ├── admin.php # Admin settings template
│ └── error.php # Error template
├── css/
-│ └── astroglobe-settings.css # Settings styles
+│ └── astrolabe-settings.css # Settings styles
└── js/
- ├── astroglobe-personalSettings.js
- └── astroglobe-adminSettings.js
+ ├── astrolabe-personalSettings.js
+ └── astrolabe-adminSettings.js
```
### Testing
1. Start MCP server with management API enabled
2. Configure Nextcloud (config.php)
-3. Enable the app: `occ app:enable astroglobe`
+3. Enable the app: `occ app:enable astrolabe`
4. Navigate to settings panels
5. Verify data loads from MCP server API
diff --git a/third_party/astroglobe/appinfo/info.xml b/third_party/astrolabe/appinfo/info.xml
similarity index 65%
rename from third_party/astroglobe/appinfo/info.xml
rename to third_party/astrolabe/appinfo/info.xml
index facb85f..a35d0a8 100644
--- a/third_party/astroglobe/appinfo/info.xml
+++ b/third_party/astrolabe/appinfo/info.xml
@@ -1,13 +1,13 @@
- astroglobe
- Astroglobe
+ astrolabe
+ AstrolabeAI-powered semantic search across your Nextcloud0.1.0
agplChris Coutinho
- Astroglobe
+ Astrolabeaihttps://github.com/cbcoutinho/nextcloud-mcp-server/issueshttps://github.com/cbcoutinho/nextcloud-mcp-server
@@ -41,16 +41,16 @@ See [documentation](https://github.com/cbcoutinho/nextcloud-mcp-server) for conf
- OCA\Astroglobe\Settings\Personal
- OCA\Astroglobe\Settings\PersonalSection
- OCA\Astroglobe\Settings\Admin
- OCA\Astroglobe\Settings\AdminSection
+ OCA\Astrolabe\Settings\Personal
+ OCA\Astrolabe\Settings\PersonalSection
+ OCA\Astrolabe\Settings\Admin
+ OCA\Astrolabe\Settings\AdminSection
- astroglobe
- Astroglobe
- astroglobe.page.index
+ astrolabe
+ Astrolabe
+ astrolabe.page.indexapp.svglink
diff --git a/third_party/astroglobe/appinfo/routes.php b/third_party/astrolabe/appinfo/routes.php
similarity index 100%
rename from third_party/astroglobe/appinfo/routes.php
rename to third_party/astrolabe/appinfo/routes.php
diff --git a/third_party/astroglobe/composer.json b/third_party/astrolabe/composer.json
similarity index 95%
rename from third_party/astroglobe/composer.json
rename to third_party/astrolabe/composer.json
index 4d72746..2a0ef6e 100644
--- a/third_party/astroglobe/composer.json
+++ b/third_party/astrolabe/composer.json
@@ -1,5 +1,5 @@
{
- "name": "nextcloud/astroglobe",
+ "name": "nextcloud/astrolabe",
"description": "This app provides a management UI for the Nextcloud MCP Server",
"license": "AGPL-3.0-or-later",
"authors": [
@@ -11,7 +11,7 @@
],
"autoload": {
"psr-4": {
- "OCA\\Astroglobe\\": "lib/"
+ "OCA\\Astrolabe\\": "lib/"
}
},
"scripts": {
diff --git a/third_party/astroglobe/composer.lock b/third_party/astrolabe/composer.lock
similarity index 100%
rename from third_party/astroglobe/composer.lock
rename to third_party/astrolabe/composer.lock
diff --git a/third_party/astroglobe/img/app-dark.svg b/third_party/astrolabe/img/app-dark.svg
similarity index 100%
rename from third_party/astroglobe/img/app-dark.svg
rename to third_party/astrolabe/img/app-dark.svg
diff --git a/third_party/astroglobe/img/app.svg b/third_party/astrolabe/img/app.svg
similarity index 100%
rename from third_party/astroglobe/img/app.svg
rename to third_party/astrolabe/img/app.svg
diff --git a/third_party/astroglobe/lib/AppInfo/Application.php b/third_party/astrolabe/lib/AppInfo/Application.php
similarity index 83%
rename from third_party/astroglobe/lib/AppInfo/Application.php
rename to third_party/astrolabe/lib/AppInfo/Application.php
index 7889991..38e7f3e 100644
--- a/third_party/astroglobe/lib/AppInfo/Application.php
+++ b/third_party/astrolabe/lib/AppInfo/Application.php
@@ -2,16 +2,16 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\AppInfo;
+namespace OCA\Astrolabe\AppInfo;
-use OCA\Astroglobe\Search\SemanticSearchProvider;
+use OCA\Astrolabe\Search\SemanticSearchProvider;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
class Application extends App implements IBootstrap {
- public const APP_ID = 'astroglobe';
+ public const APP_ID = 'astrolabe';
/** @psalm-suppress PossiblyUnusedMethod */
public function __construct() {
diff --git a/third_party/astroglobe/lib/Controller/ApiController.php b/third_party/astrolabe/lib/Controller/ApiController.php
similarity index 98%
rename from third_party/astroglobe/lib/Controller/ApiController.php
rename to third_party/astrolabe/lib/Controller/ApiController.php
index 02ceecb..6189b8a 100644
--- a/third_party/astroglobe/lib/Controller/ApiController.php
+++ b/third_party/astrolabe/lib/Controller/ApiController.php
@@ -2,13 +2,13 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Controller;
+namespace OCA\Astrolabe\Controller;
-use OCA\Astroglobe\Service\IdpTokenRefresher;
-use OCA\Astroglobe\Service\McpServerClient;
-use OCA\Astroglobe\Service\McpTokenStorage;
-use OCA\Astroglobe\Service\WebhookPresets;
-use OCA\Astroglobe\Settings\Admin as AdminSettings;
+use OCA\Astrolabe\Service\IdpTokenRefresher;
+use OCA\Astrolabe\Service\McpServerClient;
+use OCA\Astrolabe\Service\McpTokenStorage;
+use OCA\Astrolabe\Service\WebhookPresets;
+use OCA\Astrolabe\Settings\Admin as AdminSettings;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
@@ -70,7 +70,7 @@ class ApiController extends Controller {
// Should not happen (NoAdminRequired ensures user is logged in)
$this->logger->error('Revoke access called without authenticated user');
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astroglobe'])
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astrolabe'])
);
}
@@ -81,7 +81,7 @@ class ApiController extends Controller {
if (!$token) {
$this->logger->error("Cannot revoke access: No token found for user $userId");
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astroglobe'])
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astrolabe'])
);
}
@@ -102,7 +102,7 @@ class ApiController extends Controller {
// Redirect back to personal settings
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astroglobe'])
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astrolabe'])
);
}
diff --git a/third_party/astroglobe/lib/Controller/OAuthController.php b/third_party/astrolabe/lib/Controller/OAuthController.php
similarity index 96%
rename from third_party/astroglobe/lib/Controller/OAuthController.php
rename to third_party/astrolabe/lib/Controller/OAuthController.php
index 25371c1..dcfd3f8 100644
--- a/third_party/astroglobe/lib/Controller/OAuthController.php
+++ b/third_party/astrolabe/lib/Controller/OAuthController.php
@@ -2,10 +2,10 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Controller;
+namespace OCA\Astrolabe\Controller;
-use OCA\Astroglobe\Service\McpServerClient;
-use OCA\Astroglobe\Service\McpTokenStorage;
+use OCA\Astrolabe\Service\McpServerClient;
+use OCA\Astrolabe\Service\McpTokenStorage;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
@@ -83,7 +83,7 @@ class OAuthController extends Controller {
if (!$user) {
$this->logger->error('initiateOAuth: User not authenticated');
return new TemplateResponse(
- 'astroglobe',
+ 'astrolabe',
'settings/error',
['error' => $this->l->t('User not authenticated')]
);
@@ -99,7 +99,7 @@ class OAuthController extends Controller {
}
// Check if confidential client secret is configured
- $clientSecret = $this->config->getSystemValue('astroglobe_client_secret', '');
+ $clientSecret = $this->config->getSystemValue('astrolabe_client_secret', '');
$isConfidentialClient = !empty($clientSecret);
// Generate PKCE values only for public clients
@@ -142,7 +142,7 @@ class OAuthController extends Controller {
]);
return new TemplateResponse(
- 'astroglobe',
+ 'astrolabe',
'settings/error',
['error' => $this->l->t('Failed to initiate OAuth: %s', [$e->getMessage()])]
);
@@ -185,7 +185,7 @@ class OAuthController extends Controller {
$codeVerifier = $this->session->get('mcp_oauth_code_verifier');
// Check if we have either client_secret or code_verifier
- $clientSecret = $this->config->getSystemValue('astroglobe_client_secret', '');
+ $clientSecret = $this->config->getSystemValue('astrolabe_client_secret', '');
if (empty($clientSecret) && empty($codeVerifier)) {
throw new \Exception('Neither client secret nor code verifier available for authentication');
}
@@ -226,7 +226,7 @@ class OAuthController extends Controller {
// Redirect back to personal settings
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astroglobe'])
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astrolabe'])
);
} catch (\Exception $e) {
$this->logger->error('OAuth callback failed', [
@@ -241,7 +241,7 @@ class OAuthController extends Controller {
// Redirect to settings with error
return new RedirectResponse(
$this->urlGenerator->linkToRoute('settings.PersonalSettings.index', [
- 'section' => 'astroglobe',
+ 'section' => 'astrolabe',
'error' => urlencode($e->getMessage())
])
);
@@ -260,7 +260,7 @@ class OAuthController extends Controller {
$user = $this->userSession->getUser();
if (!$user) {
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astroglobe'])
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astrolabe'])
);
}
@@ -276,7 +276,7 @@ class OAuthController extends Controller {
}
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astroglobe'])
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'astrolabe'])
);
}
@@ -390,7 +390,7 @@ class OAuthController extends Controller {
// Build callback URL
$redirectUri = $this->urlGenerator->linkToRouteAbsolute(
- 'astroglobe.oauth.oauthCallback'
+ 'astrolabe.oauth.oauthCallback'
);
// Get public MCP server URL for token audience (RFC 8707 Resource Indicator)
@@ -483,7 +483,7 @@ class OAuthController extends Controller {
}
$redirectUri = $this->urlGenerator->linkToRouteAbsolute(
- 'astroglobe.oauth.oauthCallback'
+ 'astrolabe.oauth.oauthCallback'
);
// Build token request parameters
@@ -495,7 +495,7 @@ class OAuthController extends Controller {
];
// Add client authentication based on client type
- $clientSecret = $this->config->getSystemValue('astroglobe_client_secret', '');
+ $clientSecret = $this->config->getSystemValue('astrolabe_client_secret', '');
if (!empty($clientSecret)) {
// Confidential client: use client secret for authentication
diff --git a/third_party/astroglobe/lib/Controller/PageController.php b/third_party/astrolabe/lib/Controller/PageController.php
similarity index 89%
rename from third_party/astroglobe/lib/Controller/PageController.php
rename to third_party/astrolabe/lib/Controller/PageController.php
index 1c40773..998fc1d 100644
--- a/third_party/astroglobe/lib/Controller/PageController.php
+++ b/third_party/astrolabe/lib/Controller/PageController.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Controller;
+namespace OCA\Astrolabe\Controller;
-use OCA\Astroglobe\AppInfo\Application;
+use OCA\Astrolabe\AppInfo\Application;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
diff --git a/third_party/astroglobe/lib/Search/SemanticSearchProvider.php b/third_party/astrolabe/lib/Search/SemanticSearchProvider.php
similarity index 96%
rename from third_party/astroglobe/lib/Search/SemanticSearchProvider.php
rename to third_party/astrolabe/lib/Search/SemanticSearchProvider.php
index 06f2c41..e4f5d45 100644
--- a/third_party/astroglobe/lib/Search/SemanticSearchProvider.php
+++ b/third_party/astrolabe/lib/Search/SemanticSearchProvider.php
@@ -2,12 +2,12 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Search;
+namespace OCA\Astrolabe\Search;
-use OCA\Astroglobe\AppInfo\Application;
-use OCA\Astroglobe\Service\McpServerClient;
-use OCA\Astroglobe\Service\McpTokenStorage;
-use OCA\Astroglobe\Settings\Admin as AdminSettings;
+use OCA\Astrolabe\AppInfo\Application;
+use OCA\Astrolabe\Service\McpServerClient;
+use OCA\Astrolabe\Service\McpTokenStorage;
+use OCA\Astrolabe\Settings\Admin as AdminSettings;
use OCP\Files\FileInfo;
use OCP\Files\IMimeTypeDetector;
use OCP\IConfig;
@@ -55,7 +55,7 @@ class SemanticSearchProvider implements IProvider {
* Display name shown in search results grouping.
*/
public function getName(): string {
- return $this->l10n->t('Astroglobe');
+ return $this->l10n->t('Astrolabe');
}
/**
@@ -64,7 +64,7 @@ class SemanticSearchProvider implements IProvider {
*/
public function getOrder(string $route, array $routeParameters): int {
if (str_contains($route, Application::APP_ID)) {
- return -1; // Prioritize when in Astroglobe app
+ return -1; // Prioritize when in Astrolabe app
}
return 40; // Above most apps, below files/mail
}
diff --git a/third_party/astroglobe/lib/Service/IdpTokenRefresher.php b/third_party/astrolabe/lib/Service/IdpTokenRefresher.php
similarity index 97%
rename from third_party/astroglobe/lib/Service/IdpTokenRefresher.php
rename to third_party/astrolabe/lib/Service/IdpTokenRefresher.php
index 6c63865..8d73cfa 100644
--- a/third_party/astroglobe/lib/Service/IdpTokenRefresher.php
+++ b/third_party/astrolabe/lib/Service/IdpTokenRefresher.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Service;
+namespace OCA\Astrolabe\Service;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
@@ -45,7 +45,7 @@ class IdpTokenRefresher {
*/
public function refreshAccessToken(string $refreshToken): ?array {
// Check if confidential client secret is configured
- $clientSecret = $this->config->getSystemValue('astroglobe_client_secret', '');
+ $clientSecret = $this->config->getSystemValue('astrolabe_client_secret', '');
if (empty($clientSecret)) {
$this->logger->warning('Cannot refresh: no client secret configured. Confidential client required for token refresh.');
diff --git a/third_party/astroglobe/lib/Service/McpServerClient.php b/third_party/astrolabe/lib/Service/McpServerClient.php
similarity index 98%
rename from third_party/astroglobe/lib/Service/McpServerClient.php
rename to third_party/astrolabe/lib/Service/McpServerClient.php
index 2cdb85e..2338135 100644
--- a/third_party/astroglobe/lib/Service/McpServerClient.php
+++ b/third_party/astrolabe/lib/Service/McpServerClient.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Service;
+namespace OCA\Astrolabe\Service;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
@@ -355,16 +355,16 @@ class McpServerClient {
/**
* Get the OAuth client ID from system config.
*
- * The Astroglobe app has its own OAuth client (separate from MCP server's client).
+ * The Astrolabe app has its own OAuth client (separate from MCP server's client).
* Client ID must be configured in config.php for OAuth functionality to work.
*
* @return string OAuth client ID or empty string if not configured
*/
public function getClientId(): string {
- $clientId = $this->config->getSystemValue('astroglobe_client_id', '');
+ $clientId = $this->config->getSystemValue('astrolabe_client_id', '');
if (empty($clientId)) {
- $this->logger->warning('astroglobe_client_id is not configured in config.php - OAuth functionality will not work');
+ $this->logger->warning('astrolabe_client_id is not configured in config.php - OAuth functionality will not work');
return '';
}
diff --git a/third_party/astroglobe/lib/Service/McpTokenStorage.php b/third_party/astrolabe/lib/Service/McpTokenStorage.php
similarity index 98%
rename from third_party/astroglobe/lib/Service/McpTokenStorage.php
rename to third_party/astrolabe/lib/Service/McpTokenStorage.php
index 1e623f0..df3242c 100644
--- a/third_party/astroglobe/lib/Service/McpTokenStorage.php
+++ b/third_party/astrolabe/lib/Service/McpTokenStorage.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Service;
+namespace OCA\Astrolabe\Service;
use OCP\IConfig;
use OCP\Security\ICrypto;
@@ -58,7 +58,7 @@ class McpTokenStorage {
// Store in user preferences
$this->config->setUserValue(
$userId,
- 'astroglobe',
+ 'astrolabe',
'oauth_tokens',
$encrypted
);
@@ -82,7 +82,7 @@ class McpTokenStorage {
try {
$encrypted = $this->config->getUserValue(
$userId,
- 'astroglobe',
+ 'astrolabe',
'oauth_tokens',
''
);
@@ -137,7 +137,7 @@ class McpTokenStorage {
try {
$this->config->deleteUserValue(
$userId,
- 'astroglobe',
+ 'astrolabe',
'oauth_tokens'
);
diff --git a/third_party/astroglobe/lib/Service/WebhookPresets.php b/third_party/astrolabe/lib/Service/WebhookPresets.php
similarity index 99%
rename from third_party/astroglobe/lib/Service/WebhookPresets.php
rename to third_party/astrolabe/lib/Service/WebhookPresets.php
index 2db1389..f24d089 100644
--- a/third_party/astroglobe/lib/Service/WebhookPresets.php
+++ b/third_party/astrolabe/lib/Service/WebhookPresets.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Service;
+namespace OCA\Astrolabe\Service;
/**
* Webhook preset configurations for common sync scenarios.
diff --git a/third_party/astroglobe/lib/Settings/Admin.php b/third_party/astrolabe/lib/Settings/Admin.php
similarity index 91%
rename from third_party/astroglobe/lib/Settings/Admin.php
rename to third_party/astrolabe/lib/Settings/Admin.php
index d6c6415..529efd3 100644
--- a/third_party/astroglobe/lib/Settings/Admin.php
+++ b/third_party/astrolabe/lib/Settings/Admin.php
@@ -2,17 +2,17 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Settings;
+namespace OCA\Astrolabe\Settings;
-use OCA\Astroglobe\AppInfo\Application;
-use OCA\Astroglobe\Service\McpServerClient;
+use OCA\Astrolabe\AppInfo\Application;
+use OCA\Astrolabe\Service\McpServerClient;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\IConfig;
use OCP\Settings\ISettings;
/**
- * Admin settings panel for Astroglobe.
+ * Admin settings panel for Astrolabe.
*
* Displays semantic search service status, indexing metrics,
* configuration, and provides administrative controls.
@@ -54,9 +54,9 @@ class Admin implements ISettings {
// Get configuration from config.php
$serverUrl = $this->config->getSystemValue('mcp_server_url', '');
$apiKeyConfigured = !empty($this->config->getSystemValue('mcp_server_api_key', ''));
- $clientId = $this->config->getSystemValue('astroglobe_client_id', '');
+ $clientId = $this->config->getSystemValue('astrolabe_client_id', '');
$clientIdConfigured = !empty($clientId);
- $clientSecret = $this->config->getSystemValue('astroglobe_client_secret', '');
+ $clientSecret = $this->config->getSystemValue('astrolabe_client_secret', '');
$clientSecretConfigured = !empty($clientSecret);
// Check for server connection error
@@ -132,7 +132,7 @@ class Admin implements ISettings {
* @return string The section ID
*/
public function getSection(): string {
- return 'astroglobe';
+ return 'astrolabe';
}
/**
diff --git a/third_party/astroglobe/lib/Settings/AdminSection.php b/third_party/astrolabe/lib/Settings/AdminSection.php
similarity index 79%
rename from third_party/astroglobe/lib/Settings/AdminSection.php
rename to third_party/astrolabe/lib/Settings/AdminSection.php
index f470cc4..295efee 100644
--- a/third_party/astroglobe/lib/Settings/AdminSection.php
+++ b/third_party/astrolabe/lib/Settings/AdminSection.php
@@ -2,14 +2,14 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Settings;
+namespace OCA\Astrolabe\Settings;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\IIconSection;
/**
- * Admin settings section for Astroglobe.
+ * Admin settings section for Astrolabe.
*
* Creates a dedicated section in admin settings for semantic search administration.
*/
@@ -26,14 +26,14 @@ class AdminSection implements IIconSection {
* @return string The section ID
*/
public function getID(): string {
- return 'astroglobe';
+ return 'astrolabe';
}
/**
* @return string The translated section name
*/
public function getName(): string {
- return $this->l->t('Astroglobe');
+ return $this->l->t('Astrolabe');
}
/**
@@ -47,6 +47,6 @@ class AdminSection implements IIconSection {
* @return string Section icon (SVG or image URL)
*/
public function getIcon(): string {
- return $this->urlGenerator->imagePath('astroglobe', 'app-dark.svg');
+ return $this->urlGenerator->imagePath('astrolabe', 'app-dark.svg');
}
}
diff --git a/third_party/astroglobe/lib/Settings/Personal.php b/third_party/astrolabe/lib/Settings/Personal.php
similarity index 90%
rename from third_party/astroglobe/lib/Settings/Personal.php
rename to third_party/astrolabe/lib/Settings/Personal.php
index abb1f04..3632faa 100644
--- a/third_party/astroglobe/lib/Settings/Personal.php
+++ b/third_party/astrolabe/lib/Settings/Personal.php
@@ -2,11 +2,11 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Settings;
+namespace OCA\Astrolabe\Settings;
-use OCA\Astroglobe\AppInfo\Application;
-use OCA\Astroglobe\Service\McpServerClient;
-use OCA\Astroglobe\Service\McpTokenStorage;
+use OCA\Astrolabe\AppInfo\Application;
+use OCA\Astrolabe\Service\McpServerClient;
+use OCA\Astrolabe\Service\McpTokenStorage;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\IURLGenerator;
@@ -14,7 +14,7 @@ use OCP\IUserSession;
use OCP\Settings\ISettings;
/**
- * Personal settings panel for Astroglobe.
+ * Personal settings panel for Astrolabe.
*
* Displays semantic search status, background indexing access,
* and provides controls for managing content indexing.
@@ -60,7 +60,7 @@ class Personal implements ISettings {
// If no token or token is expired, show OAuth authorization UI
if (!$token || $this->tokenStorage->isExpired($token)) {
- $oauthUrl = $this->urlGenerator->linkToRoute('astroglobe.oauth.initiateOAuth');
+ $oauthUrl = $this->urlGenerator->linkToRoute('astrolabe.oauth.initiateOAuth');
return new TemplateResponse(
Application::APP_ID,
@@ -102,7 +102,7 @@ class Personal implements ISettings {
// Token might be invalid - delete it and show OAuth UI
$this->tokenStorage->deleteUserToken($userId);
- $oauthUrl = $this->urlGenerator->linkToRoute('astroglobe.oauth.initiateOAuth');
+ $oauthUrl = $this->urlGenerator->linkToRoute('astrolabe.oauth.initiateOAuth');
return new TemplateResponse(
Application::APP_ID,
@@ -146,7 +146,7 @@ class Personal implements ISettings {
* @return string The section ID
*/
public function getSection(): string {
- return 'astroglobe';
+ return 'astrolabe';
}
/**
diff --git a/third_party/astroglobe/lib/Settings/PersonalSection.php b/third_party/astrolabe/lib/Settings/PersonalSection.php
similarity index 79%
rename from third_party/astroglobe/lib/Settings/PersonalSection.php
rename to third_party/astrolabe/lib/Settings/PersonalSection.php
index cf9a6c6..fd64f21 100644
--- a/third_party/astroglobe/lib/Settings/PersonalSection.php
+++ b/third_party/astrolabe/lib/Settings/PersonalSection.php
@@ -2,14 +2,14 @@
declare(strict_types=1);
-namespace OCA\Astroglobe\Settings;
+namespace OCA\Astrolabe\Settings;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\IIconSection;
/**
- * Personal settings section for Astroglobe.
+ * Personal settings section for Astrolabe.
*
* Creates a dedicated section in personal settings for semantic search configuration.
*/
@@ -26,14 +26,14 @@ class PersonalSection implements IIconSection {
* @return string The section ID
*/
public function getID(): string {
- return 'astroglobe';
+ return 'astrolabe';
}
/**
* @return string The translated section name
*/
public function getName(): string {
- return $this->l->t('Astroglobe');
+ return $this->l->t('Astrolabe');
}
/**
@@ -47,6 +47,6 @@ class PersonalSection implements IIconSection {
* @return string Section icon (SVG or image URL)
*/
public function getIcon(): string {
- return $this->urlGenerator->imagePath('astroglobe', 'app-dark.svg');
+ return $this->urlGenerator->imagePath('astrolabe', 'app-dark.svg');
}
}
diff --git a/third_party/astroglobe/openapi.json b/third_party/astrolabe/openapi.json
similarity index 98%
rename from third_party/astroglobe/openapi.json
rename to third_party/astrolabe/openapi.json
index ace2cad..3f0c242 100644
--- a/third_party/astroglobe/openapi.json
+++ b/third_party/astrolabe/openapi.json
@@ -1,7 +1,7 @@
{
"openapi": "3.0.3",
"info": {
- "title": "astroglobe",
+ "title": "astrolabe",
"version": "0.0.1",
"description": "Manage the MCP Server from within Nextcloud UI",
"license": {
@@ -47,7 +47,7 @@
}
},
"paths": {
- "/ocs/v2.php/apps/astroglobe/api": {
+ "/ocs/v2.php/apps/astrolabe/api": {
"get": {
"operationId": "api-index",
"summary": "An example API endpoint",
diff --git a/third_party/astroglobe/package-lock.json b/third_party/astrolabe/package-lock.json
similarity index 99%
rename from third_party/astroglobe/package-lock.json
rename to third_party/astrolabe/package-lock.json
index 8359050..2246c18 100644
--- a/third_party/astroglobe/package-lock.json
+++ b/third_party/astrolabe/package-lock.json
@@ -1,11 +1,11 @@
{
- "name": "astroglobe",
+ "name": "astrolabe",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "astroglobe",
+ "name": "astrolabe",
"version": "1.0.0",
"license": "AGPL-3.0-or-later",
"dependencies": {
diff --git a/third_party/astroglobe/package.json b/third_party/astrolabe/package.json
similarity index 97%
rename from third_party/astroglobe/package.json
rename to third_party/astrolabe/package.json
index 1f00975..d3fe6cc 100644
--- a/third_party/astroglobe/package.json
+++ b/third_party/astrolabe/package.json
@@ -1,5 +1,5 @@
{
- "name": "astroglobe",
+ "name": "astrolabe",
"version": "1.0.0",
"license": "AGPL-3.0-or-later",
"engines": {
diff --git a/third_party/astroglobe/psalm.xml b/third_party/astrolabe/psalm.xml
similarity index 100%
rename from third_party/astroglobe/psalm.xml
rename to third_party/astrolabe/psalm.xml
diff --git a/third_party/astroglobe/rector.php b/third_party/astrolabe/rector.php
similarity index 100%
rename from third_party/astroglobe/rector.php
rename to third_party/astrolabe/rector.php
diff --git a/third_party/astroglobe/src/App.vue b/third_party/astrolabe/src/App.vue
similarity index 89%
rename from third_party/astroglobe/src/App.vue
rename to third_party/astrolabe/src/App.vue
index 90d5c70..0ef1f74 100644
--- a/third_party/astroglobe/src/App.vue
+++ b/third_party/astrolabe/src/App.vue
@@ -1,9 +1,9 @@
-
+
@@ -12,7 +12,7 @@
@@ -24,7 +24,7 @@
@@ -38,9 +38,9 @@
-
{{ t('astroglobe', 'Semantic Search') }}
+
{{ t('astrolabe', 'Semantic Search') }}
- {{ t('astroglobe', 'Search your indexed content using semantic similarity. Find documents by meaning, not just keywords.') }}
+ {{ t('astrolabe', 'Search your indexed content using semantic similarity. Find documents by meaning, not just keywords.') }}
@@ -206,8 +206,8 @@
+ :name="t('astrolabe', 'No results found')"
+ :description="t('astrolabe', 'Try a different query or search algorithm.')">
@@ -216,8 +216,8 @@
+ :name="t('astrolabe', 'Semantic Search')"
+ :description="t('astrolabe', 'Enter a query above to search your indexed content.')">
@@ -227,15 +227,15 @@
-
{{ t('astroglobe', 'Index Status') }}
+
{{ t('astrolabe', 'Index Status') }}
- {{ t('astroglobe', 'View the status of your vector index and sync progress.') }}
+ {{ t('astrolabe', 'View the status of your vector index and sync progress.') }}
- t('To search your content by meaning, Astroglobe needs permission to index your Nextcloud data.')); ?>
+ t('To search your content by meaning, Astrolabe needs permission to index your Nextcloud data.')); ?>
- t('Astroglobe enables semantic search - finding content by meaning rather than exact keywords. Ask questions like "meeting notes from last week" or "recipes with chicken" to find relevant documents.')); ?>
+ t('Astrolabe enables semantic search - finding content by meaning rather than exact keywords. Ask questions like "meeting notes from last week" or "recipes with chicken" to find relevant documents.')); ?>
diff --git a/third_party/astroglobe/templates/settings/personal.php b/third_party/astrolabe/templates/settings/personal.php
similarity index 86%
rename from third_party/astroglobe/templates/settings/personal.php
rename to third_party/astrolabe/templates/settings/personal.php
index 4877d66..5abfe57 100644
--- a/third_party/astroglobe/templates/settings/personal.php
+++ b/third_party/astrolabe/templates/settings/personal.php
@@ -1,6 +1,6 @@
getURLGenerator();
-script('astroglobe', 'astroglobe-personalSettings');
-style('astroglobe', 'astroglobe-settings');
+script('astrolabe', 'astrolabe-personalSettings');
+style('astrolabe', 'astrolabe-settings');
?>
-
t('Astroglobe')); ?>
+
t('Astrolabe')); ?>
t('AI-powered semantic search across your Nextcloud content. Find documents by meaning, not just keywords.')); ?>
t('Enable background indexing to use semantic search. Your Notes, Files, Calendar events, and Deck cards will be indexed so you can search by meaning.')); ?>