Fix broken readme references and modernize build configuration#562
Merged
StevenTCramer merged 27 commits intoOct 16, 2025
Merged
Conversation
- Update TimeWarpStateVersion from beta.2 to beta.3 in Directory.Build.props - Move task 033 (migrate-to-kebab-case-naming-convention) from in-progress to done folder 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This task plans the refactoring of TimeWarp.State to separate core state management from Blazor-specific features, enabling use in console applications. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…scripts - Created comprehensive analysis report of all PowerShell scripts in repository - Identified 11 scripts requiring migration, 8 Playwright-generated to exclude - Updated Task 035 to include critical GitHub workflow scripts missing from original list - Added phased migration approach prioritizing CI/CD infrastructure - Elevated priority from Medium to HIGH due to workflow script criticality Key findings: - GitHub workflow scripts (.github/workflows/*.ps1) were missing from Task 035 - These scripts are actively used in CI/CD and must be migrated first - run-e2e-tests.ps1 is the most complex script (376 lines) - sync-configurable-files.ps1 requires careful GitHub API handling (444 lines) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Created comprehensive comparison showing Nuru/Amuru approach is definitively cleaner: - TimeWarp.State: 8 workflows + 13 PowerShell scripts = ~20 files - Nuru/Amuru: 1 unified workflow + 3 C# scripts = 4 files Key findings: - ci-build.yml and master-build.yml are 99% duplicates in TimeWarp.State - PowerShell scripts have 70-80% overlap between root and workflow versions - Nuru/Amuru use C# scripts with TimeWarp.Amuru (self-bootstrapping) - Single ci-cd.yml handles all scenarios (PR, push, release, manual) Recommendations: 1. Merge duplicate workflows immediately 2. Migrate to C# scripts as per Task 035 3. Adopt Nuru/Amuru's single workflow pattern 4. Eliminate PowerShell script redundancy 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Build C# scripts alongside PowerShell (don't break anything) - Create single ci-cd.yml to replace 8 workflows - Test both side by side - Delete old stuff only after new stuff works 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Only source libraries need reproducible builds. Tests and samples regenerate lock files in CI/CD. This reduces commit noise and unnecessary version pinning for non-production code. - Added packages.lock.json to .gitignore (except source/) - Removed tracking for all sample lock files - Removed tracking for all test lock files - Kept tracking for source library lock files 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Migrating from PowerShell to .NET 10 single-file C# apps (Task 035 Phase 1): scripts/build.cs: - Replaces build-nugets.ps1 and .github/workflows/build.ps1 - Uses Nuru for CLI routing (build, pack, clean commands) - Uses Amuru for executing dotnet commands - ScriptContext manages directory changes - Includes auto-help via Nuru scripts/test.cs: - Replaces run-tests.ps1 and .github/workflows/test.ps1 - Builds and runs each test suite individually - Uses Fixie as test runner - Single default route with auto-help Both scripts use .NET 10 file-based app features with #:package directives. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
… file apps - Add 5 new .NET 10 C# single file apps using TimeWarp.Amuru: * scripts/clean.cs - Clean solution and caches * scripts/build.cs - Build projects with NuGet packaging * scripts/test.cs - Run all test suites * scripts/e2e.cs - Complex E2E test runner * scripts/package.cs - NuGet packaging workflow - Create consolidated CI/CD workflow (.github/workflows/ci-cd.yml) replacing 8 separate workflow files - Delete 13 legacy PowerShell scripts - Delete 7 duplicate workflow YAMLs - Move task to kanban/done/ Benefits: - Cross-platform compatibility without PowerShell dependency - Better performance and startup times - Type safety with compile-time checking - Strongly typed shell commands via TimeWarp.Amuru - Easier debugging and testing - Consistent C#/.NET technology stack - Better IDE support and IntelliSense
Simplified render mode handling by removing unnecessary caching and reflection-based detection. Kept only the essential render count tracking functionality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Migrated e2e.cs and added run-test-app.cs to use the new TimeWarp.Amuru Shell builder pattern instead of the deprecated Execute methods. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Replaced PowerShell script execution with direct convert-timestamp command and properly set LastCommitDate property. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Removed standalone test-app.sln as test projects are already included in the main solution. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Updated the kanban task to reflect completed render mode simplification and script migrations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Remove references to deprecated ConfiguredRenderMode property and reflection-based render mode detection. Document the use of .NET 9's RendererInfo.Name, RendererInfo.IsInteractive, and AssignedRenderMode APIs. Completes task 036 - Remove redundant render mode tracking logic. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Task completed with all items checked off: - Removed custom CurrentRenderMode and ConfiguredRenderMode properties - Migrated to .NET 9's RendererInfo.Name, RendererInfo.IsInteractive, and AssignedRenderMode - Updated documentation to reflect the new approach - All tests passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Group package references by category (TimeWarp, Microsoft ASP.NET Core, Code Analysis, Extensions, Testing, etc.) with clear section comments for better maintainability and easier version updates. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Use explicit type declaration for NuruApp variable - Fix trailing whitespace on route definitions - Convert to collection expressions for project arrays - Add explicit type annotations to foreach variables - Standardize indentation (2 spaces) - Improve code consistency throughout 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Disable RestorePackagesWithLockFile in Directory.Build.props - Delete all packages.lock.json files from source projects - Remove obsolete package.json.does-not-work file 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Update Microsoft.AspNetCore packages from 9.0.8 to 9.0.9 - Add System.Collections.Immutable 9.0.9 - Update Microsoft.Extensions.Logging packages from 9.0.8 to 9.0.9 - Update Microsoft.NET.Test.Sdk from 17.14.1 to 18.0.0 - Update Microsoft.Playwright.MSTest from 1.54.0 to 1.55.0 - Update Microsoft.TypeScript.MSBuild from 5.9.2 to 5.9.3 - Update MSTest packages from 3.10.2 to 4.0.0 - Update JetBrains.Annotations from 2025.2.0 to 2025.2.2 - Update System.Net.Http.Json from 9.0.8 to 9.0.9 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Organize properties into logical groups following TimeWarp.Nuru structure: - Package Metadata: NuGet package information - MSBuild/NuGet Configuration: Build behavior settings - Continuous Integration: CI-specific properties - Project Defaults: Framework and language settings - Code Quality and Analysis: Warning and documentation configuration - Source Link Configuration: Debugging support - Code Analyzers: Analyzer package references Improves readability and maintainability by grouping related settings. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Define reusable MSBuild variables for repository structure: - RepositoryName, RepositoryRoot for base paths - SourceDirectory, TestsDirectory, SamplesDirectory for project organization - ArtifactsDirectory, SolutionFile for build outputs - LocalNuGetFeed, LocalNuGetCache for package management Matches TimeWarp.Nuru structure for consistency across TimeWarp projects. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Reorganize Directory.Build.props and project files to use centralized path
variables, eliminating hardcoded paths and custom MSBuild targets.
## Directory.Build.props Changes
Root Directory.Build.props:
- Add custom repository variables (RepositoryRoot, ArtifactsDirectory, etc.)
- Keep TimeWarpStateVersion at root for cross-directory access
Source Directory.Build.props (new file):
- Package metadata (moved from root, scoped to source projects)
- Source Link configuration (moved from root, needed only for packages)
- PackageOutputPath=$(LocalNuGetFeed) for automatic package output
## Project File Updates
Analyzer/Generator projects:
- Set OutputPath=$(ArtifactsDirectory)analyzers\$(Configuration)\
- Outputs to artifacts/analyzers/Debug/ instead of bin/
Package projects (timewarp-state, timewarp-state-plus, timewarp-state-policies):
- Use $(RepositoryRoot) for asset paths (logo.png, read-me.md)
- Remove custom CopyPackage MSBuild targets (use PackageOutputPath instead)
- timewarp-state: Add ProjectReference to analyzers for build order
- timewarp-state: Update analyzer DLL paths to use $(ArtifactsDirectory)
## CI/CD Workflow Updates
.github/workflows/ci-cd.yml:
- Update version extraction path to source/Directory.Build.props
- Update package paths from ./LocalNugetFeed/ to ./artifacts/packages/
## Build Script Updates
scripts/build.cs:
- Add path constants (artifactsDirectory, packagesDirectory, analyzersDirectory)
- Remove redundant pack route (GeneratePackageOnBuild handles it)
- Update clean to remove artifacts directory
- Remove manual directory creation (MSBuild creates automatically)
## Results
Clean artifact structure:
artifacts/
├── analyzers/Debug/netstandard2.0/
│ ├── timewarp-state-analyzer.dll
│ └── timewarp-state-source-generator.dll
└── packages/
├── TimeWarp.State.*.nupkg
├── TimeWarp.State.Plus.*.nupkg
└── TimeWarp.State.Policies.*.nupkg
Benefits:
- Centralized path management via MSBuild variables
- Standard MSBuild properties (PackageOutputPath, OutputPath)
- Proper build order with ProjectReference
- Eliminated custom MSBuild targets
- Consistent with TimeWarp.Nuru structure
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
…ation - Suppress NU1701 warnings in analyzer tests from legacy MEF dependencies - Remove non-existent package versions from Directory.Packages.props - Add MSTest Parallelize attribute to end-to-end tests The Microsoft.CodeAnalysis.CSharp.Analyzer.Testing 1.1.2 package (latest version) has transitive dependencies on deprecated Microsoft.Composition packages that trigger .NET Framework compatibility warnings. These are harmless compatibility warnings - the packages work correctly on net9.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Renamed documentation files from hyphenated to standard naming: - read-me.md → readme.md (root level) - read-me.md → overview.md (kanban and scripts directories) - read-me.md → readme.md (project directories) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add TimeWarp.Build.Tasks package for automated git commit metadata injection - Remove custom SetAssemblyMetaData target and convert-timestamp dependency - Remove Microsoft.SourceLink.GitHub package (functionality included in Build.Tasks) - Remove CI build configuration (handled by Build.Tasks) - Update all package readme references from read-me.md to readme.md - Add .agent/workspace/ to .gitignore This simplifies the build configuration by delegating git metadata handling to a dedicated package, eliminating custom MSBuild targets and external tools. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
read-me.mdtoreadme.mdChanges
Readme Standardization
read-me.md→readme.md(root and project directories)read-me.md→overview.md(kanban and scripts directories).csprojfiles to referencereadme.mdDirectory.Build.propsPackageReadmeFile propertyBuild Configuration Modernization
.agent/workspace/to .gitignoreTest plan
🤖 Generated with Claude Code