3.0.11¶
Release Date: January 16, 2026
✨ New Features¶
NuGet Packages¶
OAuth Scope Control¶
Package: SAIF.Platform.Authentication
Added DisableDefaultScopes configuration flag to prevent automatic injection of tenant-specific OAuth scopes (user-groups, user_impersonation, .default, access).
Key Features:
- ✅ Explicit Scope Control - Opt-out of automatic scope injection across all authentication components
- ✅ Backward Compatible - Defaults to
falseto maintain existing behavior - ✅ Multi-Component Support - Available in
ScopeBuilder,OpenIdConnectServiceOptions, andHttpClientConfigurationOptions
Example Usage:
// OpenIdConnect - Full control over scopes
builder.AddOpenIdConnectServices(options =>
{
options.DisableDefaultScopes = true;
options.AdditionalScopes = ["my-custom-scope"];
// Only requests: openid, profile, offline_access, {projectId}.my-custom-scope
// Does NOT auto-add: access, user-groups, or .default
});
// Kiota HTTP Client - Explicit scopes only
builder.ConfigureHttpClient<MyClient, MyProvider>(projectId, options =>
{
options.DisableDefaultScopes = true;
options.Scopes = ["read", "write"];
// Does NOT auto-add: user_impersonation or user-groups
});
Benefits:
- 🎯 Enables precise control over requested OAuth scopes
- 🔒 Prevents unnecessary scope requests in service-to-service authentication
- 📚 Supports advanced authentication scenarios requiring custom scope configuration
Documentation:
- See code comments and unit tests for implementation details
GitHub¶
Issue and Pull Request Templates¶
Location: .github/ISSUE_TEMPLATE/, .github/PULL_REQUEST_TEMPLATE/
Added comprehensive issue and pull request templates to provide structured guidance for contributions and streamline the development workflow.
Templates:
- ✅ Bug Report - Structured format for reporting bugs with reproduction steps
- ✅ Feature Request - Template for proposing new features with clear requirements
- ✅ Pull Request - Standardized PR description format with release notes section
Benefits:
- 📋 Consistent issue and PR formatting across the repository
- 🚀 Faster triage and response times
- 📚 Better documentation of changes for release notes
- ✨ Improved collaboration and communication
🔧 Enhancements¶
Documentation¶
- ✅ Scope Naming Conventions - Added comprehensive scope naming guidance across security documentation (Authorization reference, App Permissions, Calling APIs)
- ✅ Service-to-Service Authentication - Updated API-Only Service example to use
Client.*scopes instead of misleadingUser.*scopes - ✅ Tabbed Interface - Added tabbed interface in App Permissions to separate User-Delegated vs Service-to-Service patterns
- ✅ Platform Principles - Consolidated pillars into decision-making principles for platform engineers with new "Platform as a Product" principle
- ✅ Local-First Orchestration - Renamed and refined "Development-Production Parity" to emphasize architectural mirroring
Agent Skills¶
- ✅ Composable Skills - Refactored legacy agents into consolidated, composable skills following Agent Skills standard
- ✅ Skill Organization - Created 9 domain-specific skills (forge-standards, git-workflows, release-management, etc.)
- ✅ Progressive Disclosure - Implemented references/ pattern for detailed documentation loaded on demand
GitHub Workflows¶
- ✅ Merge Gatekeeper Optimization - Added concurrency control to auto-cancel obsolete runs, reducing GitHub Action minutes by 50%+
- ✅ Polling Interval - Increased polling interval from 30 to 60 seconds to reduce API calls
🐛 Bug Fixes¶
Terraform Templates¶
- 🐛 Application Permissions Dependency - Added
depends_on = [module.saif-appservices]to fix deployment failures where application lookup occurred before creation
📚 Documentation¶
New Documentation¶
- 📖 Scope Naming Conventions - Comprehensive guidance for OAuth scope naming patterns (User-Delegated vs Service-to-Service)
- 📖 Platform Principles - Decision-making frameworks for platform engineering with 7 core principles
- 📖 Agent Skills - Documentation for composable skill system following Agent Skills standard
Updated Documentation¶
- 📝 App Permissions - Updated examples with tabbed interface and correct scope naming
- 📝 Authorization Reference - Added scope naming conventions section
- 📝 Calling APIs - Added scope naming best practices with code examples
- 📝 Roadmap - Updated objectives to reference all 7 platform principles
- 📝 GitHub Copilot Instructions - Updated to reference consolidated skills
🔄 Breaking Changes¶
None in this release ✅
📋 Additional Notes¶
- Total commits: 13
- Files changed: 115
- Contributors: 2 (Copilot, Emmitt Johnson)
Dependency Updates¶
This release includes 5 dependency update PRs managed by Dependabot:
@types/nodeupdated from 24.10.4 to 24.10.9@types/reactupdated from 19.2.7 to 19.2.8- Multiple TypeScript and .NET dependency group updates
Support¶
- 📧 Teams Support Channel: Support