All notable changes to PowerCSharp will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
PowerCSharp.Core - Core foundation and base classes for PowerCSharp library
- Provides foundational architecture for the PowerCSharp ecosystem
-
PowerCSharp.Extensions - Extension methods for common .NET types
- String Extensions (
IsNullOrWhiteSpace(),SafeSubstring(),ToTitleCase(), and more) - DateTime Extensions (
GetAge(),IsWeekend(),FirstDayOfMonth(),LastDayOfMonth()) - Collection Extensions (
IsNullOrEmpty(),FirstOrDefaultSafe(),Page()) - Advanced Extensions - HTTP, LINQ, JSON, XML, Object, Type, Stream, and Configuration extensions
- Dynamic LINQ Support - Runtime expression parsing and dynamic filtering/ordering
- String Extensions (
-
PowerCSharp.Utilities - Utility classes for common operations
- ValidationHelper - Email, URL, and numeric validation
- FileHelper - Safe file operations and size formatting
- MathHelper - Mathematical operations (Clamp, IsInRange, Percentage, angle conversions, even/odd checks)
-
PowerCSharp.Helpers - Specialized helper classes
- JsonHelper - Safe JSON serialization/deserialization and pretty printing
- CryptoHelper - SHA-256, MD5 hashing and random string generation
- EnvironmentHelper - Environment variable access and system information
-
Comprehensive Testing
- 103 unit tests covering all major functionality
- Test coverage for edge cases and error scenarios
- All tests passing with >90% code coverage
-
Cross-Platform Support
- .NET 8.0 compatibility
- Conditional compilation for framework-specific features
- .NET 8.0
- PowerCSharp.Core v0.2.0 - Enhanced core interfaces and models
- PowerCSharp.Extensions v0.2.0 - Comprehensive extension migration and enhancement
- PowerCSharp.Utilities v0.2.0 - Enhanced utility classes and validation
- PowerCSharp.Helpers v0.2.0 - Updated helper classes for specialized tasks
- 16 New Extension Classes with 50+ new extension methods
- 3 New Interface Classes for dynamic LINQ operations and configuration
- Full .NET 8.0 Compatibility for all migrated extensions
- Comprehensive HTTP & Network Extensions
HttpStatusCodeExtensions- 11 HTTP status code utility methodsUriExtensions- URI query string manipulationHttpRequestMessageExtensions- HTTP request cloning for retry scenarios
- Advanced LINQ & Dynamic Query Extensions
DynamicExpressionExtensions- Runtime LINQ expression parsingIEnumerableExtensions- Dynamic filtering and orderingIDynamicFilterProvider<T>andIDynamicOrderProvider<T>interfaces
- Enhanced String Manipulation Extensions
StringExtensions- Merged and enhanced with 6 new utility methods- CamelCase conversion, ASCII filtering, URL validation, key normalization
- Object & Type Reflection Extensions
GenericExtensions- Hierarchical processing and property copyingObjectExtensions- Null checking, boolean conversion, object mappingGenericTypeExtensions- Generic type operations and namingTypeExtensions- Concrete type resolution for interfaces
- JSON & XML Processing Extensions
JsonExtensions- Safe JsonElement property accessJsonElementExtensions- Case-insensitive JSON property accessXmlExtensions- XML element flattening to dictionary
- Stream & Configuration Extensions
StreamExtensions- Asynchronous stream cloningConfigurationExtensions- Configuration binding utilitiesIAppOptions- Configuration options interface
- Collection Extensions
IListExtensions- Predicate-based bulk removal operations
- New NuGet Package Dependencies
- System.Linq.Dynamic.Core for dynamic LINQ
- Microsoft.AspNetCore.WebUtilities for URL operations
- Microsoft.Extensions.Configuration packages for configuration support
- System.Text.Json for JSON processing
- Updated PowerCSharp.Core to v0.2.0 with enhanced interfaces
- Improved documentation and API reference coverage
- N/A
- N/A
- N/A
- N/A
- PowerCSharp.Compatibility v0.1.0 - .NET Framework compatibility layer
- String Extensions for .NET Framework with System.Web dependencies
- Async Helper for safe sync-over-async operations in legacy applications
- Validation Utilities compatible with .NET Framework 4.6.2+
- Validation Attributes for static analysis and design-time validation
- .NET Framework Support - Targets net462, net472, net48
- System.Web Integration - URL parameter handling with HttpUtility
- Comprehensive Documentation with migration guide to modern PowerCSharp
- N/A
- N/A
- N/A
- N/A
- N/A
This is the first stable production release of PowerCSharp, marking the transition from development to a fully supported library suitable for enterprise use.
- Production Stability: All APIs finalized and tested for production workloads
- NuGet Package Icons: Professional 128x128 icons for all packages
- Enhanced Code Quality: Resolved nullable reference warnings and improved code coverage
- Comprehensive Documentation: Complete API reference and migration guides
- Semantic Versioning: Proper version management for long-term maintenance
- Centralized Package Management: All packages now use consistent versioning
- Version Update: All packages updated to v1.0.0 for semantic versioning compliance
- API Finalization: All extension methods, utilities, and helpers are now stable
- Documentation Overhaul: Updated all documentation for v1.0.0 release
- Build System: Enhanced CI/CD pipeline for production releases
- Security Review: Comprehensive security audit completed
- Dependency Updates: All dependencies updated to latest stable versions
- Code Analysis: Static analysis completed with no critical issues
- Version Requirements: Minimum .NET 8.0 for modern packages (backward compatible via .NET Standard 2.0)
- API Stability: All APIs are now considered stable and will follow semantic versioning
- From v0.x.x: This is a major version bump, but all APIs remain compatible
- .NET Framework: Continue using PowerCSharp.Compatibility for legacy support
- Modern .NET: All packages optimized for .NET 8.0 with .NET Standard 2.0 compatibility
-
PowerCSharp.Features.Abstractions v1.0.0 — Contracts package:
IFeatureModule,IFeatureFlagProvider,IFeatureRegistrationContext,IFeaturePipelineContext,FeatureOptionsBase,FeatureDescriptor,FeatureTier,FeatureFlagValue,FeatureFlagSource. Zero third-party dependencies; targetsnetstandard2.0+net8.0so any feature can reference it cheaply. -
PowerCSharp.Features v1.0.0 — The Features engine: hybrid auto-scan + explicit module discovery (
FeatureModuleDiscovery), composite flag resolver (override → custom providers → env vars → appsettings → default), DI orchestration, feature registry, and opt-in diagnostics HTTP endpoint. Entry points:AddPowerFeatures()/UsePowerFeatures(). Startup feature matrix logged viaILoggerinUsePowerFeatures. -
PowerCSharp.BuiltInFeatures v1.0.0 — Bundle of lightweight, runtime-flag-toggled ASP.NET Core capabilities. Initial built-in: CORS (
PowerFeatures:Cors).AddBuiltInFeatures()convenience extension opts the bundle into auto-discovery. Any built-in can be disabled and replaced by a custom Pluggable Feature. -
PowerCSharp.Feature.Cache.Abstractions v1.3.0 — Framework-agnostic cache contracts and NoOp safe-off floor:
ICacheService,IDiskCacheService,ICacheStore,CacheProviderenum,CacheResult<T>,CacheMetadata,CacheFileKind, and NoOp implementations (NoOpCacheService,NoOpDiskCacheService). Targetsnetstandard2.0+net8.0. -
PowerCSharp.Feature.Cache v1.3.0 — Cache feature module (
CacheFeatureModule), options (CacheFeatureOptions), andAddCacheFeature()explicit extension. Always registers the NoOp floor so dependents resolve safely when no provider is active. -
PowerCSharp.Feature.Cache.BitFaster v1.3.0 — BitFaster-backed in-memory LRU cache provider. Isolates
BitFaster.Cachingdependency. Targetsnetstandard2.0+net8.0. Implements fullICacheServicesync/async API with performance metrics and stampede protection (GetOrCreate/GetOrCreateAsync). -
PowerCSharp.Feature.Cache.Disk v1.3.0 — Disk-backed LRU cache provider. Atomic writes, cross-process file-lock coordination, background cleanup timer, metadata-aware operations, and
DebugHelperfor troubleshooting. Targetsnet8.0. -
DirectoryExtensions—TrySafeDeleteand related safe directory-deletion helpers inPowerCSharp.Extensions. -
Comprehensive Features test suite —
PowerCSharp.Features.Tests,PowerCSharp.BuiltInFeatures.Tests, andPowerCSharp.Feature.Cache.Testscovering: engine discovery, CORS module, NoOp floor, BitFaster provider, disk cache (async, cross-process locking, timer, metadata, file kind, validation, LRU eviction). -
.editorconfig— Comprehensive coding standards (member ordering, brace style, nullable, indentation) applied across the entire codebase. -
Local NuGet feed script (
scripts/pack-local-feed.sh) — Packs all projects to a local feed for integration testing with consumer projects (e.g.PowerCSharp.CleanArchitecture).
Directory.Build.props— AddedPowerCSharpFeaturesVersion(1.0.0) andPowerCSharpFeatureCacheVersion(1.3.0) alongside the existingPowerCSharpVersion. ChangedGeneratePackageOnBuildtofalse(explicit pack via CI only).PowerCSharp.Feature.Cache.Abstractions— Reorganised into dedicatedEnumsandNoOpsub-namespaces. Removed redundantusingstatements. Nullable annotations updated throughout.DiskCacheOptions— Renamed toDiskCacheFeatureOptionsand moved to thePowerCSharp.Feature.Cache.Diskpackage (was incorrectly in the core Cache package).DiskCacheService— Refactored to useIDiskCacheServiceabstraction; background timer moved to core service for cross-platform compatibility.BitFasterCacheService— Extended with comprehensive sync/async methods and metadata tracking.- Member ordering — All affected files reorganised to follow EditorConfig standards (fields, constructors, properties, methods).
- Conditional statements — Block braces applied consistently across
PowerCSharp.Extensions,PowerCSharp.Utilities, and Feature packages. JsonExtensions— Removed duplicate class (consolidated intoJsonElementExtensions).OrderClause— Extracted to its own file fromDynamicExpressionExtensions.AsyncHelper— Extended withValueTasksupport for async-to-sync bridging.- Nullable reference type annotations — Updated in cache abstractions, sample endpoints, and test support files.
Console.WriteLineremoved fromPowerFeaturesServiceCollectionExtensionsandFeatureModuleDiscovery— Debug output replaced by properILoggerstartup summary inUsePowerFeatures→FeatureDiagnostics.LogMatrix.Console.WriteLineremoved fromObjectExtensions.MapTo— Exception in property-copy helper now silenced without writing to stdout.- Unused variable warning in
CacheFeatureModule—Assembly.Loadresult now uses the discard pattern (_).
PowerCSharp.Feature.Cache.Memory— nativeIMemoryCacheprovider- Additional Built-in Features: correlation ID, security headers, exception handling middleware
- Hotfix branch support in CI/CD (
hotfix/*→main+develop)
- .NET 9.0 / .NET 10.0 support
PowerCSharp.Feature.Observability— OpenTelemetry integration
PowerCSharp follows Semantic Versioning:
- MAJOR: Incompatible API changes
- MINOR: New functionality in a backward-compatible manner
- PATCH: Backward-compatible bug fixes
- Patch Releases: As needed for critical bug fixes
- Minor Releases: Monthly for new features
- Major Releases: Quarterly for significant changes
Each release includes:
- Summary of changes
- Breaking changes (if any)
- New features and improvements
- Bug fixes and security updates
- Migration guide (if needed)
Security vulnerabilities are handled according to our Security Policy:
- Critical: Immediate patch and release
- High: Patch within 7 days
- Medium: Patch within 14 days
- Low: Patch within 30 days
Security advisories are published on GitHub and include:
- CVE identifier (when applicable)
- Severity rating
- Affected versions
- Mitigation steps
- Fixed versions
When contributing to PowerCSharp, please:
- Add entries to the "Unreleased" section
- Follow the format shown above
- Be specific about changes
- Reference issues when applicable
- Include breaking changes in their own section
### Added
- `IsValidEmail()` method to `ValidationHelper` (fixes #123)
- Support for .NET 9.0 (requested in #456)
### Fixed
- Null reference exception in `JsonHelper.SafeDeserialize()` (fixes #789)
- Performance regression in string extensions (fixes #101)
### Breaking Changes
- `ValidationHelper.IsValidUrl()` now returns false for empty stringsThe initial development phase included:
- Library architecture design
- Package structure planning
- Core functionality implementation
- Testing infrastructure setup
- Documentation creation
- CI/CD pipeline configuration
All pre-1.0.0 development was internal and not publicly released.
For more information about PowerCSharp releases, visit our GitHub Repository. 🚀