Files
ZeroSpace/.junie/plans/rename-projects-to-zerospace-format.md
2026-09-26 00:48:37 -04:00

7.3 KiB

sessionId
sessionId
session-260925-234832-1pc0

Requirements

Overview & Goals

Rename all projects in the repository from single-word names (Build, Deploy, Model, Web) to qualified names starting with the ZeroSpace. prefix (ZeroSpace.Build, ZeroSpace.Deploy, ZeroSpace.Model, ZeroSpace.Web). Ensure all solution definitions, project files, folder paths, project references, namespaces, and script paths are updated consistently.

Scope

  • In Scope:
    • Renaming project directories: ZS/Build → ZS/ZeroSpace.Build, ZS/Deploy → ZS/ZeroSpace.Deploy, ZS/Model → ZS/ZeroSpace.Model, ZS/Web → ZS/ZeroSpace.Web.
    • Renaming .csproj files: Build.csproj → ZeroSpace.Build.csproj, Deploy.csproj → ZeroSpace.Deploy.csproj, Model.csproj → ZeroSpace.Model.csproj, Web.csproj → ZeroSpace.Web.csproj.
    • Updating ZS/ZeroSpace.sln project declarations and configuration mappings.
    • Updating <ProjectReference> in ZeroSpace.Web.csproj.
    • Updating C# namespaces and @using directives to match the ZeroSpace.* convention.
    • Updating hardcoded project/folder paths in ZeroSpace.Build/Program.cs and ZeroSpace.Deploy/Program.cs.
  • Out of Scope:
    • Modifying business logic or UI behavior in the Blazor web application.
    • Renaming Markdown documentation files under zs.docs.

Technical Design

Current Implementation

The solution contains 4 projects in ZS/:

  • ZS/Model/Model.csproj: Class library declaring namespace Model;.
  • ZS/Build/Build.csproj: Console generator referencing Model/Units.g.cs and scanning for ZS.sln.
  • ZS/Deploy/Deploy.csproj: Deployment tool targeting ../Web/Web.csproj.
  • ZS/Web/Web.csproj: Blazor WebAssembly app referencing ..\Model\Model.csproj and using Web, Web.Layout, and Model.
  • ZS/ZeroSpace.sln: Solution listing Web, Build, Model, and Deploy.

Key Decisions

  • Rename Project Directories: Project folder names will be updated to match the project names (ZeroSpace.Build, ZeroSpace.Deploy, ZeroSpace.Model, ZeroSpace.Web) to maintain standard .NET convention where directory name matches the assembly/project name.
  • Update Namespaces: Align namespaces (ZeroSpace.Model, ZeroSpace.Web) with project naming for consistency across the solution.
  • Fix Solution Search in Build Tool: Update FindSolutionRoot in ZeroSpace.Build/Program.cs to locate ZeroSpace.sln (or any *.sln).

Proposed Changes

  • Project Structure & Naming:
    • ZS/Build/ → ZS/ZeroSpace.Build/
    • ZS/Build/Build.csproj → ZS/ZeroSpace.Build/ZeroSpace.Build.csproj
    • ZS/Deploy/ → ZS/ZeroSpace.Deploy/
    • ZS/Deploy/Deploy.csproj → ZS/ZeroSpace.Deploy/ZeroSpace.Deploy.csproj
    • ZS/Model/ → ZS/ZeroSpace.Model/
    • ZS/Model/Model.csproj → ZS/ZeroSpace.Model/ZeroSpace.Model.csproj
    • ZS/Web/ → ZS/ZeroSpace.Web/
    • ZS/Web/Web.csproj → ZS/ZeroSpace.Web/ZeroSpace.Web.csproj
  • Solution File (ZS/ZeroSpace.sln):
    • Update project name strings and project file paths to ZeroSpace.*.
  • Project Reference (ZS/ZeroSpace.Web/ZeroSpace.Web.csproj):
    • Change ..\Model\Model.csproj to ..\ZeroSpace.Model\ZeroSpace.Model.csproj.
  • Source Files & Namespaces:
    • ZS/ZeroSpace.Model/UnitData.cs: namespace ZeroSpace.Model;
    • ZS/ZeroSpace.Model/UnitEfficiency.cs: namespace ZeroSpace.Model;
    • ZS/ZeroSpace.Model/Units.g.cs: namespace ZeroSpace.Model;
    • ZS/ZeroSpace.Build/Program.cs: update model path to ZeroSpace.Model, generate namespace ZeroSpace.Model;, check ZeroSpace.sln.
    • ZS/ZeroSpace.Deploy/Program.cs: update path lookups for ZeroSpace.Web and ZeroSpace.Web.csproj.
    • ZS/ZeroSpace.Web/Program.cs: using ZeroSpace.Web;
    • ZS/ZeroSpace.Web/_Imports.razor: @using ZeroSpace.Web, @using ZeroSpace.Web.Layout, @using ZeroSpace.Model
    • ZS/ZeroSpace.Web/Pages/Units.razor: @using ZeroSpace.Model

Architecture Diagram

graph TD
    Sln[ZS/ZeroSpace.sln] --> Web[ZS/ZeroSpace.Web]
    Sln --> Model[ZS/ZeroSpace.Model]
    Sln --> Build[ZS/ZeroSpace.Build]
    Sln --> Deploy[ZS/ZeroSpace.Deploy]
    Web --> Model
    Build -. generates Units.g.cs .-> Model
    Deploy -. publishes .-> Web

Testing

Validation Approach

  • Verify solution builds cleanly via CLI (dotnet build ZS/ZeroSpace.sln).
  • Run code generation via dotnet run --project ZS/ZeroSpace.Build/ZeroSpace.Build.csproj to confirm Units.g.cs is generated with the proper namespace.
  • Validate project references and dependencies resolve without warnings or missing assembly errors.

Key Scenarios

  • dotnet build ZS/ZeroSpace.sln succeeds with 0 errors and 0 warnings.
  • ZeroSpace.Web compiles with reference to ZeroSpace.Model.
  • ZeroSpace.Build locates zs.docs and writes generated code into ZS/ZeroSpace.Model/Units.g.cs.

Edge Cases

  • Relative path traversal from build outputs (AppContext.BaseDirectory in ZeroSpace.Deploy) resolving the renamed ZeroSpace.Web project directory.
  • FindSolutionRoot helper locating ZeroSpace.sln accurately.

Delivery Steps

✓ Step 1: Rename project directories and project files

Project folders and .csproj files follow the ZeroSpace.* naming convention.

  • Rename directory ZS/Model to ZS/ZeroSpace.Model and project file Model.csproj to ZeroSpace.Model.csproj.
  • Rename directory ZS/Build to ZS/ZeroSpace.Build and project file Build.csproj to ZeroSpace.Build.csproj.
  • Rename directory ZS/Deploy to ZS/ZeroSpace.Deploy and project file Deploy.csproj to ZeroSpace.Deploy.csproj.
  • Rename directory ZS/Web to ZS/ZeroSpace.Web and project file Web.csproj to ZeroSpace.Web.csproj.

✓ Step 2: Update solution file and project references

ZeroSpace.sln and project reference paths correctly reference the renamed projects and directories.

  • Update ZS/ZeroSpace.sln project entries and relative paths for ZeroSpace.Web, ZeroSpace.Build, ZeroSpace.Model, and ZeroSpace.Deploy.
  • Update project reference <ProjectReference Include="..\ZeroSpace.Model\ZeroSpace.Model.csproj" /> in ZS/ZeroSpace.Web/ZeroSpace.Web.csproj.

✓ Step 3: Update namespaces and code path references

Source code files, generator scripts, and deployment scripts use the updated ZeroSpace.* namespaces and folder paths.

  • Update C# namespaces in ZS/ZeroSpace.Model/UnitData.cs, ZS/ZeroSpace.Model/UnitEfficiency.cs, and ZS/ZeroSpace.Model/Units.g.cs to ZeroSpace.Model.
  • Update code generator in ZS/ZeroSpace.Build/Program.cs to target ZeroSpace.Model folder, output namespace ZeroSpace.Model;, and verify solution root resolution for ZeroSpace.sln.
  • Update deploy script paths in ZS/ZeroSpace.Deploy/Program.cs to locate ZeroSpace.Web and ZeroSpace.Web.csproj.
  • Update ZS/ZeroSpace.Web/Program.cs, ZS/ZeroSpace.Web/_Imports.razor, and ZS/ZeroSpace.Web/Pages/Units.razor to reference ZeroSpace.Web, ZeroSpace.Web.Layout, and ZeroSpace.Model.

✓ Step 4: Validate solution build and code generation

The entire solution builds cleanly with zero errors/warnings and code generation runs successfully.

  • Run dotnet build ZS/ZeroSpace.sln to ensure all projects compile and link without errors.
  • Run ZeroSpace.Build console application to ensure unit code generation completes and updates ZeroSpace.Model/Units.g.cs correctly.