# Remove Pipeline Viewer Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** Remove the pipeline viewer feature from the web UI and clean up all supporting code (controllers, DTOs, client services, routes). **Architecture:** Delete files in dependency order (DTOs/interfaces first would break compilation), so we delete leaf components first (views, client), then API layer, then shared contracts/DTOs. Modify DI registrations and navigation. **Tech Stack:** Blazor WebAssembly, ASP.NET Core API, C# --- ## Task 1: Remove Client Components (Blazor Pages) **Files:** - Delete: `src/JdeScoping.Client/Pages/Admin/PipelineViewer.razor` - Delete: `src/JdeScoping.Client/Components/Admin/PipelineScheduleSection.razor` - Delete: `src/JdeScoping.Client/Components/Admin/SqlQueryModal.razor` **Step 1: Delete PipelineViewer.razor** ```bash rm src/JdeScoping.Client/Pages/Admin/PipelineViewer.razor ``` **Step 2: Delete PipelineScheduleSection.razor** ```bash rm src/JdeScoping.Client/Components/Admin/PipelineScheduleSection.razor ``` **Step 3: Delete SqlQueryModal.razor (if exists)** ```bash rm -f src/JdeScoping.Client/Components/Admin/SqlQueryModal.razor ``` **Step 4: Verify files deleted** ```bash ls src/JdeScoping.Client/Pages/Admin/ | grep -i pipeline || echo "No pipeline pages remain" ls src/JdeScoping.Client/Components/Admin/ | grep -i pipeline || echo "No pipeline components remain" ``` Expected: No pipeline-related files in Admin folders. --- ## Task 2: Remove Navigation Link **Files:** - Modify: `src/JdeScoping.Client/Layout/MainLayout.razor:16` **Step 1: Remove the pipeline viewer nav link** In `MainLayout.razor`, delete this line (around line 16): ```razor Pipeline Viewer ``` **Step 2: Verify the change** ```bash grep -n "pipeline-viewer" src/JdeScoping.Client/Layout/MainLayout.razor || echo "Nav link removed" ``` Expected: "Nav link removed" --- ## Task 3: Remove Client Service **Files:** - Delete: `src/JdeScoping.Client/Services/PipelineApiClient.cs` - Modify: `src/JdeScoping.Client/Program.cs:58` **Step 1: Delete PipelineApiClient.cs** ```bash rm src/JdeScoping.Client/Services/PipelineApiClient.cs ``` **Step 2: Remove DI registration from Program.cs** In `src/JdeScoping.Client/Program.cs`, delete this line (around line 58): ```csharp builder.Services.AddScoped(); ``` **Step 3: Verify the changes** ```bash grep -n "PipelineApiClient" src/JdeScoping.Client/Program.cs || echo "DI registration removed" ls src/JdeScoping.Client/Services/PipelineApiClient.cs 2>/dev/null || echo "File deleted" ``` Expected: Both checks show removal confirmed. --- ## Task 4: Remove API Controller and Mapper **Files:** - Delete: `src/JdeScoping.Api/Controllers/PipelineController.cs` - Delete: `src/JdeScoping.Api/Mapping/PipelineMapper.cs` - Delete: `src/JdeScoping.Api/Mapping/IPipelineMapper.cs` - Modify: `src/JdeScoping.Api/DependencyInjection.cs:43` **Step 1: Delete PipelineController.cs** ```bash rm src/JdeScoping.Api/Controllers/PipelineController.cs ``` **Step 2: Delete PipelineMapper.cs** ```bash rm src/JdeScoping.Api/Mapping/PipelineMapper.cs ``` **Step 3: Delete IPipelineMapper.cs** ```bash rm src/JdeScoping.Api/Mapping/IPipelineMapper.cs ``` **Step 4: Remove DI registration from DependencyInjection.cs** In `src/JdeScoping.Api/DependencyInjection.cs`, delete this line (around line 43): ```csharp services.AddSingleton(); ``` **Step 5: Verify the changes** ```bash ls src/JdeScoping.Api/Controllers/PipelineController.cs 2>/dev/null || echo "Controller deleted" ls src/JdeScoping.Api/Mapping/*Pipeline* 2>/dev/null || echo "Mapper files deleted" grep -n "PipelineMapper" src/JdeScoping.Api/DependencyInjection.cs || echo "DI registration removed" ``` Expected: All three checks confirm removal. --- ## Task 5: Remove Core DTOs and Interface **Files:** - Delete: `src/JdeScoping.Core/Models/Pipelines/` (entire folder) - Delete: `src/JdeScoping.Core/ApiContracts/IPipelineApiClient.cs` **Step 1: Delete the Pipelines DTO folder** ```bash rm -rf src/JdeScoping.Core/Models/Pipelines/ ``` **Step 2: Delete IPipelineApiClient.cs** ```bash rm src/JdeScoping.Core/ApiContracts/IPipelineApiClient.cs ``` **Step 3: Verify deletions** ```bash ls src/JdeScoping.Core/Models/Pipelines/ 2>/dev/null || echo "Pipelines folder deleted" ls src/JdeScoping.Core/ApiContracts/IPipelineApiClient.cs 2>/dev/null || echo "Interface deleted" ``` Expected: Both checks confirm deletion. --- ## Task 6: Remove API Routes **Files:** - Modify: `src/JdeScoping.Core/ApiContracts/ApiRoutes.cs:155-188` **Step 1: Remove the Pipelines class from ApiRoutes.cs** Delete the entire `Pipelines` static class (lines 155-188): ```csharp /// /// Routes for pipeline configuration API endpoints. /// public static class Pipelines { /// Base route for pipeline endpoints. public const string Base = "api/pipelines"; /// Route template for getting a pipeline by name. public const string ByName = "{name}"; /// Route template for getting pipeline status. public const string Status = "{name}/status"; /// Route template for getting pipeline executions. public const string Executions = "{name}/executions"; /// Builds the route to get a specific pipeline config. /// The pipeline name to URL-encode. /// The formatted route. public static string GetByName(string name) => $"api/pipelines/{Uri.EscapeDataString(name)}"; /// Builds the route to get pipeline status. /// The pipeline name to URL-encode. /// The formatted route. public static string GetStatus(string name) => $"api/pipelines/{Uri.EscapeDataString(name)}/status"; /// Builds the route to get pipeline executions. /// The pipeline name to URL-encode. /// The number of recent executions to retrieve. /// The formatted route. public static string GetExecutions(string name, int count = 10) => $"api/pipelines/{Uri.EscapeDataString(name)}/executions?count={count}"; } ``` **Step 2: Verify the change** ```bash grep -n "Pipelines" src/JdeScoping.Core/ApiContracts/ApiRoutes.cs || echo "Pipelines routes removed" ``` Expected: "Pipelines routes removed" --- ## Task 7: Delete Plan Documents **Files:** - Delete: `docs/plans/2026-01-07-pipeline-viewer-design.md` - Delete: `docs/plans/2026-01-07-pipeline-viewer-implementation.md` **Step 1: Delete design document** ```bash rm docs/plans/2026-01-07-pipeline-viewer-design.md ``` **Step 2: Delete implementation plan** ```bash rm docs/plans/2026-01-07-pipeline-viewer-implementation.md ``` **Step 3: Verify deletions** ```bash ls docs/plans/*pipeline-viewer* 2>/dev/null || echo "Plan documents deleted" ``` Expected: "Plan documents deleted" --- ## Task 8: Build and Verify **Step 1: Build the solution** ```bash cd /Users/dohertj2/Desktop/JdeScopingTool/NEW && dotnet build ``` Expected: Build succeeds with no errors. **Step 2: Search for any remaining pipeline viewer references** ```bash grep -r "PipelineViewer\|PipelineApiClient\|IPipelineApiClient\|PipelineController\|IPipelineMapper\|PipelineMapper\|pipeline-viewer" src/ --include="*.cs" --include="*.razor" || echo "No references remain" ``` Expected: "No references remain" **Step 3: Run tests** ```bash dotnet test ``` Expected: All tests pass. --- ## Task 9: Commit **Step 1: Stage all changes** ```bash git add -A ``` **Step 2: Commit** ```bash git commit -m "$(cat <<'EOF' refactor(webui): remove pipeline viewer feature Remove the read-only pipeline viewer from the web UI: - Delete PipelineViewer.razor page and supporting components - Delete PipelineController and PipelineMapper from API - Delete Pipeline DTOs from Core - Delete PipelineApiClient from Client - Remove navigation link and DI registrations - Delete obsolete plan documents The ConfigManager utility retains pipeline editing capabilities. EOF )" ``` --- ## Summary | Task | Action | Files Affected | |------|--------|----------------| | 1 | Delete Blazor components | 3 files deleted | | 2 | Remove nav link | 1 file modified | | 3 | Remove client service | 1 deleted, 1 modified | | 4 | Remove API layer | 3 deleted, 1 modified | | 5 | Remove Core DTOs | 5 files deleted | | 6 | Remove API routes | 1 file modified | | 7 | Delete plan docs | 2 files deleted | | 8 | Build and verify | - | | 9 | Commit | - | **Total:** 14 files deleted, 4 files modified