Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,21 @@ jobs:
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Generate RC version
id: version
run: ./scripts/generate-rc-version.sh

- name: Restore dependencies
run: dotnet restore ${{ env.SOLUTION_PATH }}

- name: Build
run: dotnet build ${{ env.SOLUTION_PATH }} --configuration Release --no-restore
- name: Build with version
run: ./scripts/build-with-version.sh "${{ env.SOLUTION_PATH }}" "${{ steps.version.outputs.version }}"

- name: Run tests
run: dotnet test ${{ env.UNIT_TEST_PROJECT_PATH }} --configuration Release --no-build --verbosity normal

- name: Generate RC version
id: version
run: ./scripts/generate-rc-version.sh

- name: Pack NuGet package
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts -p:PackageVersion=${{ steps.version.outputs.version }}
run: ./scripts/pack-with-version.sh "${{ env.PROJECT_PATH }}" "${{ steps.version.outputs.version }}"

- name: Create tag
run: ./scripts/create-tag.sh "${{ steps.version.outputs.version }}" "${{ github.sha }}"
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,21 @@ jobs:
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Extract version from tag
id: version
run: ./scripts/extract-version-from-tag.sh "${{ github.event.release.tag_name }}"

- name: Restore dependencies
run: dotnet restore ${{ env.SOLUTION_PATH }}

- name: Build
run: dotnet build ${{ env.SOLUTION_PATH }} --configuration Release --no-restore
- name: Build with version
run: ./scripts/build-with-version.sh "${{ env.SOLUTION_PATH }}" "${{ steps.version.outputs.version }}"

- name: Run tests
run: dotnet test ${{ env.UNIT_TEST_PROJECT_PATH }} --configuration Release --no-build --verbosity normal

- name: Extract version from tag
id: version
run: ./scripts/extract-version-from-tag.sh "${{ github.event.release.tag_name }}"

- name: Pack NuGet package
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts -p:PackageVersion=${{ steps.version.outputs.version }}
run: ./scripts/pack-with-version.sh "${{ env.PROJECT_PATH }}" "${{ steps.version.outputs.version }}"

- name: Publish to GitHub Packages
run: ./scripts/publish-package.sh
Expand Down
26 changes: 24 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.3.0] - 2025-08-25

### Added
- **Assembly Version Synchronization**: Assembly versions now match package versions for better version tracking
- New `pack-with-version.sh` script for automated assembly versioning in CI/CD
- Enhanced version documentation in README and CLAUDE.md

### Changed
- **Assembly Versioning Scheme**:
- Release packages (`X.Y.Z`): Assembly version = `X.Y.Z.0`
- RC packages (`X.Y.Z-rc`): Assembly version = `X.Y.Z.1`
- CI/CD workflows now set `AssemblyVersion`, `FileVersion`, and `AssemblyInformationalVersion` properties
- Cleaner GitHub Actions workflows with versioning logic moved to reusable script

### Removed
- **BREAKING**: Removed embedded SandboxTests project from solution
- Interactive Blazor test application moved to separate [CoinbaseAdvancedTradeClient-Sandbox](https://github.com/PearlAegis/CoinbaseAdvancedTradeClient-Sandbox) repository

### Fixed
- `Assembly.GetName().Version` now returns correct package version in consuming applications
- All 142 unit tests now passing (previously had 2 failing tests)

## [0.2.0] - 2025-08-10

### Added
Expand Down Expand Up @@ -50,6 +72,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Complete API Coverage**: All Coinbase Advanced Trade endpoints
- **WebSocket Support**: Real-time ticker, level2, market trades, and user data
- **Authentication**: Secure API key-based authentication
- **Testing**: 140+ unit tests covering all functionality
- **Interactive Testing**: Blazor Server app for manual API testing
- **Testing**: 142+ unit tests covering all functionality
- **Interactive Testing**: Separate Blazor Server project for manual API testing
- **Type Safety**: Strongly-typed models with nullable reference types
26 changes: 16 additions & 10 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ dotnet build CoinbaseAdvancedTradeClient/CoinbaseAdvancedTradeClient/CoinbaseAdv
# Run unit tests
dotnet test CoinbaseAdvancedTradeClient/CoinbaseAdvancedTradeClient.UnitTests/CoinbaseAdvancedTradeClient.UnitTests.csproj --configuration Release

# Run interactive Blazor test app
dotnet run --project CoinbaseAdvancedTradeClient/CoinbaseAdvancedTradeClient.SandboxTests/
# Build the complete solution
dotnet build CoinbaseAdvancedTradeClient.sln --configuration Release
```

### Packaging
Expand All @@ -42,8 +42,7 @@ CoinbaseAdvancedTradeClient/
│ ├── Interfaces/ # Interface definitions
│ ├── Models/ # Data models
│ └── Resources/ # Resource files
├── CoinbaseAdvancedTradeClient.UnitTests/ # Unit tests
├── CoinbaseAdvancedTradeClient.SandboxTests/ # Interactive Blazor app
├── CoinbaseAdvancedTradeClient.UnitTests/ # Unit tests (142+ tests)
├── README.md # Main documentation
├── CHANGELOG.md # Version history
└── CLAUDE.md # This file
Expand All @@ -56,7 +55,7 @@ CoinbaseAdvancedTradeClient/
- **Newtonsoft.Json**: JSON serialization
- **WebSocket4Net**: WebSocket connections
- **xUnit + FakeItEasy**: Unit testing
- **Blazor Server**: Interactive testing application
- **Separate Sandbox**: Interactive testing via standalone CoinbaseAdvancedTradeClient-Sandbox project

## CI/CD Pipeline

Expand All @@ -74,17 +73,24 @@ CoinbaseAdvancedTradeClient/

### Versioning Strategy
- **RC Packages**: `X.Y.Z-rc` (auto-generated on PRs)
- Package Version: `X.Y.Z-rc`
- Assembly Version: `X.Y.Z.1`
- **Release Packages**: `X.Y.Z` (from GitHub releases)
- Package Version: `X.Y.Z`
- Assembly Version: `X.Y.Z.0`
- **Current Version**: 0.2.0 (includes .NET 9 upgrade and GitHub Actions migration)

### Assembly Versioning
Assembly versions are automatically synchronized with package versions using the `pack-with-version.sh` script, ensuring `Assembly.GetName().Version` returns the correct version in consuming applications.

## Common Development Tasks

### Adding New API Endpoints
1. Add interface in `Interfaces/Endpoints/`
2. Implement in `Endpoints/`
3. Add models in `Models/Api/`
4. Create unit tests in `UnitTests/Endpoints/`
5. Add to sandbox app for manual testing
5. Test manually using the separate CoinbaseAdvancedTradeClient-Sandbox project

### Updating Dependencies
1. Check compatibility with .NET 9
Expand All @@ -93,8 +99,8 @@ CoinbaseAdvancedTradeClient/
4. Update documentation if needed

### Testing
- **Unit Tests**: 140+ tests covering all functionality
- **Integration Tests**: Blazor sandbox app for manual testing
- **Unit Tests**: 142+ tests covering all functionality
- **Integration Tests**: Separate CoinbaseAdvancedTradeClient-Sandbox project for manual testing
- **CI Tests**: Automated testing on every PR

## Authentication
Expand All @@ -106,12 +112,12 @@ The client uses API key authentication with HMAC-SHA256 signatures:

## Known Issues

- 2 unit tests currently failing (unrelated to .NET 9 migration)
- Build produces warnings for nullable reference types (expected with .NET 9)
- All unit tests now passing (142 tests)

## Getting Help

- Check existing unit tests for usage examples
- Use the Blazor sandbox app for interactive testing
- Use the separate CoinbaseAdvancedTradeClient-Sandbox project for interactive testing
- Review the comprehensive README.md for API documentation
- Check CHANGELOG.md for recent changes and migration notes

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading
Loading