v0.8.0¶
Release Date: 2026-06-21
Highlights¶
- Organization Ownership Transfer - Transfer ownership from one member to another with transaction-safe implementation
- OmniStorage Session Backend - Production-ready session storage with Redis support, size limits, and observability
- SpiceDB API Compatibility - Updated client for newer SpiceDB versions
Added¶
Organization Ownership Transfer¶
New TransferOwnership method in the organization service for secure ownership transfers:
import "github.com/grokify/systemforge/identity/organization"
// Transfer ownership to another member
err := orgService.TransferOwnership(ctx, organization.TransferOwnershipInput{
OrganizationID: orgID,
FromPrincipal: currentOwnerID,
ToPrincipal: newOwnerID,
NewRoleForOld: "admin", // or "member"
})
Features:
- Transaction-safe implementation with automatic rollback
- Validation: current owner verification, target must be existing member
- Authorization backend sync after ownership change
- New API endpoint:
POST /organizations/{slug}/transfer-ownership
See Memberships - Ownership Transfer for details.
OmniStorage Session Store¶
New session store backend powered by omnistorage-core:
import "github.com/grokify/systemforge/session/bff"
store, err := bff.NewOmniStorageStore(bff.OmniStorageConfig{
Backend: "redis",
RedisURL: "redis://localhost:6379",
MaxSessionSize: 1024 * 1024, // 1MB
MaxSessionsPerUser: 5, // Auto-evict oldest
DefaultTTL: 24 * time.Hour,
SiteID: "myapp", // Multi-site isolation
})
Features:
- Memory and Redis backends for development and production
- Session size limits to prevent bloat attacks
- Per-user session limits with automatic eviction
- Site isolation for multi-tenant deployments
- Violation callbacks for observability and alerting
See Session Management and BFF Sessions for details.
Fixed¶
SpiceDB Client API Compatibility¶
Updated embedded SpiceDB client to use grpc.NewClient instead of the removed runnableServer.GRPCDialContext method, ensuring compatibility with SpiceDB v1.54.0+.
Dependencies¶
| Dependency | Change |
|---|---|
| go | 1.26.2 → 1.26.4 |
| github.com/authzed/authzed-go | 1.9.0 → 1.10.0 |
| github.com/authzed/spicedb | 1.52.0 → 1.54.0 |
| github.com/danielgtaylor/huma/v2 | 2.37.3 → 2.38.0 |
| github.com/go-chi/chi/v5 | 5.2.5 → 5.3.0 |
| github.com/jackc/pgx/v5 | 5.9.2 → 5.10.0 |
| github.com/mattn/go-sqlite3 | 1.14.44 → 1.14.46 |
| github.com/plexusone/omniobserve | 0.9.0 → 0.11.0 |
| github.com/plexusone/omnistorage-core | (new) 0.5.0 |
| github.com/redis/go-redis/v9 | 9.19.0 → 9.20.1 |
| golang.org/x/crypto | 0.50.0 → 0.53.0 |
| google.golang.org/grpc | 1.81.0 → 1.81.1 |
Documentation¶
- Added Session Management Overview with architecture diagram
- Added BFF Sessions documentation with store interface and backends
- Updated Memberships with ownership transfer documentation