Skip to content

Initial TimeWarp.Builder repository setup with dev CLI and CI workflow#3

Merged
StevenTCramer merged 28 commits into
masterfrom
Cramer/2025-12-22/dev
May 17, 2026
Merged

Initial TimeWarp.Builder repository setup with dev CLI and CI workflow#3
StevenTCramer merged 28 commits into
masterfrom
Cramer/2025-12-22/dev

Conversation

@StevenTCramer

Copy link
Copy Markdown
Contributor

Summary

  • Migrate TimeWarp.Builder source from the timewarp-nuru monorepo and set up this dedicated repository
  • Add a dev CLI (build/clean/format/pack/test/workflow/self-install endpoints) for the local development workflow
  • Add GitHub Actions CI workflow, kanban-based project management, branding assets, VSCode env, and BannedApiAnalyzers enforcement
  • Address v1.0.0 release-readiness blockers: NuGet metadata in source/Directory.Build.props, bump to 1.0.0-beta.2, repository.props references corrected

Test plan

  • dev build succeeds locally
  • dev test passes (note: test project is still tracked in task 001)
  • dev pack produces a valid TimeWarp.Builder NuGet package with the new metadata
  • GitHub Actions workflow.yml runs green on this PR
  • Verify analyzer / BannedSymbols rules trigger as expected

🤖 Generated with Claude Code

StevenTCramer and others added 28 commits December 22, 2025 21:08
Configures VSCode with project-specific settings for TimeWarp Builder development environment including color themes and asset paths.

🤖 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <[email protected]>
Adds TimeWarp Builder avatar and visual assets for consistent project branding across documentation and development tools.

🤖 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <[email protected]>
Establishes a five-state kanban workflow with task templates and operational procedures for systematic project tracking and task management.

🤖 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <[email protected]>
Moves the main README.md from the package-specific directory to the repository root to improve project discoverability and provide clearer project overview at the top level. Updates the package configuration to reference the documentation at its new location for proper NuGet package inclusion.

🤖 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <[email protected]>
- Change RepositoryName from timewarp-nuru to timewarp-builder
- Change SolutionFile from timewarp-nuru.slnx to timewarp-builder.slnx
- Add ToolsDirectory for future tooling support
Implements a TimeWarp.Nuru-based dev CLI at tools/dev-cli/ with six commands:
- build: Build the library with configurable configuration/verbosity
- clean: Clean solution and delete all bin/obj directories
- pack: Create NuGet packages to artifacts/packages/
- test: Run the test suite (gracefully handles missing tests directory)
- format: Check or fix code formatting via dotnet format
- self-install: AOT compile dev CLI to ./bin for fast execution via direnv

Also adds .envrc (PATH_add bin) for direnv integration, updates
Directory.Packages.props with TimeWarp.Nuru 3.0.0-beta.54 and
TimeWarp.Amuru 1.0.0-beta.20, and registers the dev CLI in the solution file.
- Add source/Directory.Build.props with shared package metadata (Version,
  Authors, RepositoryUrl, PackageLicenseExpression, PackageIcon, PackageReadmeFile),
  packaging defaults (IsPackable, GeneratePackageOnBuild), source link settings,
  and shared assets (logo.png, readme.md)
- Move Version out of timewarp-builder.csproj into source/Directory.Build.props
- Add PackageVersion entries for analyzer packages to Directory.Packages.props
  to satisfy Central Package Management requirements
- Prune Directory.Packages.props of unused packages (Serilog, OpenTelemetry,
  Aspire, benchmarks, MCP, Mediator, etc.)
- Bump Roslynator to 4.15.0, NetAnalyzers to 10.0.103, Amuru to 1.0.0-beta.20
- Add assets/logo.png NuGet package icon
- Rename README.md to readme.md to match PackageReadmeFile declaration
- Fix trailing whitespace in self-install.cs
- Refactor null checks to ?? throw pattern in pack.cs, self-install.cs, test.cs
- Use static Unit import (Value instead of Unit.Value) in endpoints
- Add .vscode peacock color customizations
- Add AGENTS.md and .agent/workspace files
- Add tools/dev-cli/endpoints/ci.cs implementing the full CI/CD pipeline:
  - Auto-detects mode from GITHUB_EVENT_NAME (pr/push/release/workflow_dispatch)
  - PR workflow: clean -> build -> test
  - Release workflow: clean -> build -> check-version -> pack -> push
  - Inline check-version reads version from source/Directory.Build.props
  - Push uses dotnet nuget push with optional OIDC API key
- Add .github/workflows/workflow.yml triggered on push/PR to master,
  release events, and manual dispatch; uses OIDC Trusted Publishing on release
- Fix clean.cs to target timewarp-builder.csproj directly instead of
  timewarp-builder.slnx (slnx parser rejects dev.cs runfile entry)
- Move task 003 to in-progress
- Fix directory name: commands/ -> endpoints/
- Fix file names: *-command.cs -> *.cs (build.cs, clean.cs, etc.)
- Add workflow.cs (ci command) to the implementation list
- Update command count: 6 -> 7 commands (added ci)
- Fix test output to show all 7 commands
- Fix key decisions section to reflect actual implementation
- Rename .timewarp/ganda.jsonc to .timewarp/dev.jsonc with updated schema
- Mark NuGet metadata and version bump items complete in task 001

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Update TimeWarp.Amuru, TimeWarp.Nuru, TimeWarp.Jaribu, and the Microsoft
CodeAnalysis analyzer packages to the latest versions to fix CI failures.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Previously the test endpoint set Environment.ExitCode = 1 when the tests/
directory did not exist, which made CI fail even though the pipeline
reported SUCCEEDED. Until the test project lands (kanban task 001), treat
a missing tests/ directory as a skip with exit code 0.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@StevenTCramer StevenTCramer merged commit 5297f9c into master May 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant