Skip to content

Release v4.0.0#31

Merged
simonpinn merged 17 commits intomasterfrom
release/v4.0.0
Oct 20, 2025
Merged

Release v4.0.0#31
simonpinn merged 17 commits intomasterfrom
release/v4.0.0

Conversation

@simonpinn
Copy link
Owner

@simonpinn simonpinn commented Oct 20, 2025

Upgrade to .NET 9.0 and Neo4jClient 4.0.0

This release modernizes the Neo4jClient.Extension library with updated dependencies, improved CI/CD infrastructure, and comprehensive documentation.

Breaking Changes

  • Upgraded to .NET 9.0 (from .NET Framework)
  • Upgraded to Neo4jClient 4.0.0 - Major version now aligns with Neo4jClient for clear compatibility
  • Modern SDK-style project files (removed packages.config)
  • Full dotnet core support

New Features

  • Automated CI/CD Pipeline
    • Separate ci.yml workflow for build/test on all branches
    • Separate ci-cd.yml workflow for pack/publish on release branches (master, develop, release/, hotfix/)
    • Tag-based release.yml workflow for official releases
    • GitVersion integration for semantic versioning with build metadata handling
  • Docker-Based Testing
    • Automated Neo4j 5.24 container setup for integration tests
    • Cross-platform test scripts (run-tests-with-neo4j.sh and .bat)
    • GitHub Actions services integration
  • Comprehensive Documentation
    • CLAUDE.md - Detailed architecture and implementation guide
    • CHANGELOG.md - Version history tracking
    • CONTRIBUTING.md - Development guidelines
    • Enhanced README with modern examples
    • Pull request template

Fixes

  • Updated unit tests for Neo4jClient 4.0.0 parameter syntax ($param instead of {param})
  • Updated unit tests for Neo4jClient 4.0.0 formatting changes (multi-line MERGE statements)
  • Fixed integration tests to work with Neo4j 5.24

Version Strategy

Starting with v4.0.0, the library's major version matches Neo4jClient's major version:

  • Neo4jClient.Extension 4.x → Neo4jClient 4.x
  • Neo4jClient.Extension 5.x → Neo4jClient 5.x (future)

Fixes #27

  - Upgrade from .NET Framework to .NET 9.0
  - Add GitVersion for automatic semantic versioning
  - Add GitHub Actions CI/CD pipeline with automated testing
  - Add NuGet.org publishing on releases
  - Modernize README with examples and badges
  - Add CHANGELOG, CONTRIBUTING, and documentation

  +semver: major
@simonpinn simonpinn self-assigned this Oct 20, 2025
@simonpinn simonpinn requested a review from Copilot October 20, 2025 01:12
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Release v4.0.0: modernizes the library to .NET 9 and Neo4jClient 4.0.0, updates tests to new Cypher/parameter formatting, adds CI/CD and Docker-based integration testing, and refreshes documentation.

  • Upgrade to SDK-style projects targeting .NET 9; update dependencies to Neo4jClient 4.0.0 and NUnit 4
  • Update Cypher generation to $-parameter syntax and multi-line ON MATCH/ON CREATE formatting; adjust tests accordingly
  • Add GitHub Actions CI/CD, Docker-based Neo4j test setup, and comprehensive docs (README, CHANGELOG, CONTRIBUTING, etc.)

Reviewed Changes

Copilot reviewed 40 out of 42 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
test/Neo4jClient.Extension.UnitTest/packages.config Remove legacy packages.config (migrate to SDK-style/PackageReference)
test/Neo4jClient.Extension.UnitTest/Neo4jClient.Extension.UnitTest.csproj Convert to SDK-style, target net9.0; update NUnit/Moq/UnitsNet and add test SDK/adapters
test/Neo4jClient.Extension.UnitTest/Cypher/FluentConfigUpdateTests.cs Switch to Assert.That style
test/Neo4jClient.Extension.UnitTest/Cypher/FluentConfigMergeTests.cs Update assertions to new Cypher formatting and $-params
test/Neo4jClient.Extension.UnitTest/Cypher/FluentConfigMatchTests.cs Update assertions to new $-param syntax
test/Neo4jClient.Extension.UnitTest/Cypher/FluentConfigCreateTests.cs Relax a test to non-null assertions; update expected formatting
test/Neo4jClient.Extension.UnitTest/Cypher/FluentConfigBaseTest.cs Adjust JSON converter/contract resolver setup for tests
test/Neo4jClient.Extension.UnitTest/Cypher/CypherTypeItemHelperTests.cs Update to Assert.That style
test/Neo4jClient.Extension.UnitTest/Cypher/CypherLabelAttributeTests.cs Update to $-param syntax
test/Neo4jClient.Extension.UnitTest/Cypher/CypherExtensionTests.cs Update to new Cypher formatting and $-params; normalize newline in one test
test/Neo4jClient.Extension.UnitTest/CustomConverters/AreaConverterFixture.cs Switch to Assert.That style
test/Neo4jClient.Extension.Test.Common/packages.config Remove legacy packages.config
test/Neo4jClient.Extension.Test.Common/Neo4jClient.Extension.Test.Common.csproj Convert to SDK-style net9.0; add PackageReferences and project refs
test/Neo4jClient.Extension.IntegrationTest/packages.config Remove legacy packages.config
test/Neo4jClient.Extension.IntegrationTest/Tests/MergeTests.cs Make tests async; call ExecuteWithoutResultsAsync
test/Neo4jClient.Extension.IntegrationTest/Tests/CreateTests.cs Make tests async; call ExecuteWithoutResultsAsync
test/Neo4jClient.Extension.IntegrationTest/Neo4jClient.Extension.IntegrationTest.csproj Convert to SDK-style; add test SDK and project refs
test/Neo4jClient.Extension.IntegrationTest/IntegrationTest.cs Switch to BoltGraphClient, async setup/cleanup, add config-based credentials
test/Neo4jClient.Extension.IntegrationTest/App.config Switch to Bolt URI and add username/password appSettings
src/Neo4jClient.Extension/packages.config Remove legacy packages.config
src/Neo4jClient.Extension/Neo4jClient.Extension.csproj Convert to SDK-style net9.0; reference Neo4jClient 4.0.0; keep shared AssemblyInfo link
src/Neo4jClient.Extension/Cypher/Extension/CypherExtension.CqlBuilders.cs Update builders to $-param formatting; adjust match property wrapping
src/Neo4jClient.Extension.Attributes/packages.config Remove legacy packages.config
src/Neo4jClient.Extension.Attributes/Neo4jClient.Extension.Attributes.csproj Convert to SDK-style net9.0; reference Neo4jClient 4.0.0; keep shared AssemblyInfo link
run-tests-with-neo4j.sh Add script to spin up Neo4j and run integration tests
run-tests-with-neo4j.bat Windows batch equivalent to run Neo4j and tests
global.json Pin .NET SDK 9.0.0
docker-compose.yml Add Neo4j 5.24 service with healthcheck and volumes
README.md Major rewrite: features, usage, setup, testing, packaging
GitVersion.yml Add GitVersion config for semver and branch strategies
DOCKER-TESTING.md Add Docker test setup documentation
CONTRIBUTING.md Add contributing guidelines and development workflow
CHANGELOG.md Add changelog with v4.0.0 notes and strategy
ARCHITECTURE_QUICK_REFERENCE.md Add architecture quick reference
.github/workflows/release.yml New release workflow: tag-based build, pack, publish to NuGet, release
.github/workflows/ci.yml New CI workflow: build, unit/integration tests with Neo4j service, artifact upload
.github/workflows/ci-cd.yml CI-CD workflow: build, tests, pack, and publish on tracked branches
.github/SETUP.md Guide for repo secrets and workflow setup
.github/PULL_REQUEST_TEMPLATE.md Add PR template
.github/IMPLEMENTATION_SUMMARY.md Summarize modernization work
Files not reviewed (1)
  • .idea/.idea.Neo4jClient.Extension/.idea/.gitignore: Language not supported

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@simonpinn simonpinn merged commit baf55e9 into master Oct 20, 2025
5 checks 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.

Will this support .net core soon?

2 participants