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 + Astrolabe AI-powered semantic search across your Nextcloud 0.1.0 agpl Chris Coutinho - Astroglobe + Astrolabe ai https://github.com/cbcoutinho/nextcloud-mcp-server/issues https://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.index app.svg link 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 @@