diff --git a/.env.example b/.env.example index fc635cd..85d5d71 100644 --- a/.env.example +++ b/.env.example @@ -3,5 +3,3 @@ # GraphQL API endpoint VITE_OSWATCHER_API_URI=http://localhost:4000 -# Auth0 Configuration -# Get these values from your Auth0 dashboard (https://manage.auth0.com/) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b79919c..4382eb3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,10 +4,9 @@ # api.oswatcher.com, a domain that no longer resolves. The Pages site was # unpublished, so the deploy step could only fail. # -# The frontend is deliberately not published as a container image: it is a Vue -# SPA whose API URI and Auth0 configuration are baked in at build time via -# VITE_* build args, so one image cannot serve more than a single deployment. -# compose.prod.yml therefore builds it from source with per-deployment args. +# Publishing is handled by deploy.yml, which pushes the image to GHCR. The +# bundle is built with a placeholder API URI that docker-entrypoint.sh +# substitutes at container start, so one image serves any deployment. name: Build on: diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2f9bc08..14411ee 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,7 +3,7 @@ # The image is built WITHOUT VITE_* build args on purpose. Vite resolves # import.meta.env.* at build time, so the bundle is baked with the sentinel # defaults from the Dockerfile and docker-entrypoint.sh substitutes the real -# API URI and Auth0 configuration when the container starts. That is what lets +# API URI when the container starts. That is what lets # a single published image serve any deployment. name: Deploy to GHCR diff --git a/CLAUDE.md b/CLAUDE.md index 72c925e..508c4be 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -29,7 +29,6 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ### Technology Stack - **Frontend**: Vue 3 with Composition API and TypeScript - **UI Framework**: Naive UI component library -- **Authentication**: Auth0 (optional, configured via environment variables) - **GraphQL**: Apollo Client for API communication - **Build Tool**: Vite with Vue plugin - **Styling**: CSS with scoped component styles @@ -39,7 +38,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - `src/components/` - Reusable Vue components organized by feature - `src/router/` - Vue Router configuration - `src/queries.ts` - GraphQL queries and mutations -- `src/graphql-client.ts` - Apollo Client setup and configuration with Auth0 token injection +- `src/graphql-client.ts` - Apollo Client setup and configuration - `src/graphql-types.ts` - Auto-generated TypeScript types from GraphQL schema - `docs/reference/` - Technical reference documentation (VitePress) @@ -52,7 +51,6 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - **Single Mode**: View a single commit's data (filesystem, registry, symbols) - **Comparison Mode**: Compare two commits showing differences - Supports both unified and side-by-side layouts -3. **Authentication** (`CallbackView`): Auth0 integration for user authentication (optional, not enforced by default) ### GraphQL Integration - Schema located at `schema.graphql` defines the data model @@ -75,16 +73,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co #### Required Environment Variables - `VITE_OSWATCHER_API_URI` - GraphQL API endpoint URL (used for Apollo Client and blob downloads via REST API `/blob/:hash`) -#### Optional Environment Variables (Auth0) -- `VITE_AUTH0_DOMAIN` - Auth0 tenant domain (e.g., your-tenant.us.auth0.com) -- `VITE_AUTH0_CLIENT_ID` - Auth0 application client ID -- `VITE_AUTH0_AUDIENCE` - Auth0 API identifier for access tokens - -Authentication is optional and not enforced by default. When configured, the application will: -- Display login/logout UI in the header -- Automatically include Bearer tokens in GraphQL requests -- Support social login (Google, GitHub) and email/password authentication -- Use localStorage with refresh tokens for persistent sessions +The frontend is unauthenticated. Auth0 was removed once the deployment became +public; there is no login flow and no token injection. #### Development Setup 1. Copy `.env.example` to `.env` and configure required variables @@ -113,8 +103,6 @@ The project includes comprehensive technical reference documentation: ### Development Notes - **Search functionality**: Global filesystem search available via Ctrl+K (streams results from GraphQL) - **Backend**: Expects Neo4j-backed GraphQL API serving commit, filesystem, registry, and PDB data -- **Authentication**: Auth0 integration is optional and can be enabled via environment variables - **UI Library**: Naive UI provides consistent component design and theming - **Type Safety**: Enforced through TypeScript and auto-generated GraphQL types -- **Token Management**: Apollo Client automatically injects Auth0 Bearer tokens when available - **Routing**: Uses Vue Router with support for single and comparison inspector modes \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 66f89e0..649f7eb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,7 +10,6 @@ OSWatcher Frontend is a Vue.js application for exploring operating system analys - **Frontend**: Vue 3 with Composition API and TypeScript - **UI Framework**: Naive UI component library -- **Authentication**: Auth0 (optional) - **GraphQL**: Apollo Client for API communication - **Build Tool**: Vite with Vue plugin - **Styling**: CSS with scoped component styles diff --git a/docs/reference/architecture.md b/docs/reference/architecture.md index b20d2f6..93810aa 100644 --- a/docs/reference/architecture.md +++ b/docs/reference/architecture.md @@ -28,8 +28,7 @@ This document provides a complete technical reference for the OSWatcher Frontend src/ ├── views/ # Main application views │ ├── HomeView.vue # Commit history view -│ ├── InspectorView.vue # Unified inspector (single/comparison modes) -│ └── CallbackView.vue # Auth0 callback handler +│ └── InspectorView.vue # Unified inspector (single/comparison modes) ├── components/ # Reusable components │ ├── FilesystemInspector.vue # Filesystem inspector (single/comparison) │ ├── RegistryInspector.vue # Registry inspector (single/comparison) diff --git a/docs/reference/environment.md b/docs/reference/environment.md index 3d5b8f2..8cafde6 100644 --- a/docs/reference/environment.md +++ b/docs/reference/environment.md @@ -34,71 +34,6 @@ if (!apiUri) { **File Location:** `src/graphql-client.ts:6-8`, `src/download.ts`, `src/utils/filesystem.ts` -## Optional Environment Variables - -### Auth0 Configuration - -Auth0 authentication is integrated but optional. If not configured, the application will still function but authentication features will not work. - -#### `VITE_AUTH0_DOMAIN` - -**Type:** `string` -**Required:** No (for authentication features) -**Description:** Your Auth0 tenant domain. - -**Example Values:** -```bash -VITE_AUTH0_DOMAIN=your-tenant.us.auth0.com -``` - -**How to obtain:** -1. Log in to [Auth0 Dashboard](https://manage.auth0.com/) -2. Navigate to your Application settings -3. Copy the "Domain" field - -**File Location:** `src/main.ts` - -#### `VITE_AUTH0_CLIENT_ID` - -**Type:** `string` -**Required:** No (for authentication features) -**Description:** Your Auth0 application client ID. - -**Example Values:** -```bash -VITE_AUTH0_CLIENT_ID=abc123xyz789 -``` - -**How to obtain:** -1. Log in to [Auth0 Dashboard](https://manage.auth0.com/) -2. Navigate to Applications > Applications -3. Select your SPA application -4. Copy the "Client ID" field - -**File Location:** `src/main.ts` - -#### `VITE_AUTH0_AUDIENCE` - -**Type:** `string` -**Required:** No (for API authentication) -**Description:** Your Auth0 API identifier (audience). Required for obtaining access tokens for the GraphQL API. - -**Example Values:** -```bash -VITE_AUTH0_AUDIENCE=https://your-api.example.com -``` - -**How to obtain:** -1. Log in to [Auth0 Dashboard](https://manage.auth0.com/) -2. Navigate to Applications > APIs -3. Create or select your API -4. Copy the "Identifier" field - -**File Location:** `src/main.ts` - -**Backend Integration:** -The backend Neo4j GraphQL server must be configured to verify Auth0 JWT tokens using the JWKS endpoint. - ## Environment File Setup ### Standalone vs. OSWatcher Deploy @@ -113,10 +48,6 @@ Create a `.env` file in the project root: # Backend API endpoint (GraphQL and blob downloads) VITE_OSWATCHER_API_URI=http://localhost:4000 -# Auth0 Configuration (optional) -VITE_AUTH0_DOMAIN=your-tenant.us.auth0.com -VITE_AUTH0_CLIENT_ID=your_client_id_here -VITE_AUTH0_AUDIENCE=https://your-api.example.com ``` ### Production Environment @@ -127,10 +58,6 @@ Environment variables should be set through your deployment platform: # Backend API endpoint (GraphQL and blob downloads) VITE_OSWATCHER_API_URI=https://api.oswatcher.com -# Auth0 Configuration (optional) -VITE_AUTH0_DOMAIN=your-tenant.us.auth0.com -VITE_AUTH0_CLIENT_ID=your_production_client_id -VITE_AUTH0_AUDIENCE=https://api.oswatcher.com ``` ## Variable Naming Convention @@ -189,9 +116,6 @@ Environment variable types are defined in `env.d.ts`: ```typescript interface ImportMetaEnv { readonly VITE_OSWATCHER_API_URI: string - readonly VITE_AUTH0_DOMAIN: string - readonly VITE_AUTH0_CLIENT_ID: string - readonly VITE_AUTH0_AUDIENCE: string } ``` @@ -213,7 +137,7 @@ interface ImportMetaEnv { 3. **File Download Failures** - Verify `VITE_OSWATCHER_API_URI` is correctly configured - Check that the backend REST API `/blob/:hash` endpoint is accessible - - Ensure proper authentication/access permissions + - Ensure the blob exists in object storage ### Debugging diff --git a/env.d.ts b/env.d.ts index b96b57b..319721b 100644 --- a/env.d.ts +++ b/env.d.ts @@ -2,9 +2,6 @@ interface ImportMetaEnv { readonly VITE_OSWATCHER_API_URI: string - readonly VITE_AUTH0_DOMAIN: string - readonly VITE_AUTH0_CLIENT_ID: string - readonly VITE_AUTH0_AUDIENCE: string } interface ImportMeta {