Skip to content

Version Packages#113

Merged
borisno2 merged 1 commit intomainfrom
changeset-release/main
Nov 23, 2025
Merged

Version Packages#113
borisno2 merged 1 commit intomainfrom
changeset-release/main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot commented Nov 15, 2025

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@opensaas/stack-auth@0.2.0

Minor Changes

  • #121 3851a3c Thanks @borisno2! - Add strongly-typed session support via module augmentation

    This change enables developers to define custom session types with full TypeScript autocomplete and type safety throughout their OpenSaas applications using the module augmentation pattern.

    Core Changes:

    • Converted Session from type to interface to enable module augmentation
    • Updated all session references to properly handle Session | null
    • Added comprehensive JSDoc documentation with module augmentation examples
    • Updated AccessControl, AccessContext, and access control engine to support nullable sessions
    • Added "Session Typing" section to core package documentation

    Auth Package:

    • Added "Session Type Safety" section to documentation
    • Documented how Better Auth users can create session type declarations
    • Provided step-by-step guide for matching sessionFields to TypeScript types
    • Created getSession() helper pattern for transforming Better Auth sessions

    Developer Experience:

    Developers can now augment the Session interface to get autocomplete everywhere:

    // types/session.d.ts
    import '@opensaas/stack-core'
    
    declare module '@opensaas/stack-core' {
      interface Session {
        userId?: string
        email?: string
        role?: 'admin' | 'user'
      }
    }

    This provides autocomplete in:

    • Access control functions
    • Hooks (resolveInput, validateInput, etc.)
    • Context object
    • Server actions

    Benefits:

    • Zero boilerplate - module augmentation provides types everywhere automatically
    • Full type safety for session properties
    • Autocomplete in all contexts that use session
    • Developer controls session shape (no assumptions about structure)
    • Works with any auth provider (Better Auth, custom, etc.)
    • Fully backward compatible - existing code continues to work
    • Follows TypeScript best practices (similar to NextAuth.js pattern)

    Example:

    // Before: No autocomplete
    const isAdmin: AccessControl = ({ session }) => {
      return session?.role === 'admin' // ❌ 'role' is 'unknown'
    }
    
    // After: Full autocomplete and type checking
    const isAdmin: AccessControl = ({ session }) => {
      return session?.role === 'admin' // ✅ Autocomplete + type checking
      //             ↑ Shows: userId, email, role
    }

    Migration:

    No migration required - this is a fully backward compatible change. Existing projects continue to work with untyped sessions. Projects can opt-in to typed sessions by creating a types/session.d.ts file with module augmentation.

Patch Changes

  • #107 f4f3966 Thanks @borisno2! - Add strict typing for plugin runtime services

    This change implements fully typed plugin runtime services, providing autocomplete and type safety for context.plugins throughout the codebase.

    Core Changes:

    • Extended Plugin type with optional runtimeServiceTypes metadata for type-safe code generation
    • Converted OpenSaasConfig and AccessContext from type to interface to enable module augmentation
    • Plugins can now declare their runtime service type information

    Auth Plugin:

    • Added AuthRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.auth.getUser() and context.plugins.auth.getCurrentUser()

    RAG Plugin:

    • Added RAGRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.rag.generateEmbedding() and context.plugins.rag.generateEmbeddings()

    CLI Generator:

    • Enhanced plugin types generator to import and use plugin runtime service types
    • Generated .opensaas/plugin-types.ts now includes proper type imports
    • PluginServices interface extends Record<string, Record<string, any> | undefined> for type compatibility
    • Maintains backwards compatibility with plugins that don't provide type metadata

    UI Package:

    • Updated AdminUI props to accept contexts with typed plugin services
    • Ensures compatibility between generated context types and UI components

    Benefits:

    • Full TypeScript autocomplete for all plugin runtime methods
    • Compile-time type checking catches errors early
    • Better IDE experience with hover documentation and jump-to-definition
    • Backwards compatible - third-party plugins without type metadata continue to work
    • Zero type errors in examples

    Example:

    const context = await getContext()
    
    // Fully typed with autocomplete
    context.plugins.auth.getUser('123') // (userId: string) => Promise<unknown>
    context.plugins.rag.generateEmbedding('text') // (text: string, providerName?: string) => Promise<number[]>

@opensaas/stack-cli@0.2.0

Minor Changes

  • #107 f4f3966 Thanks @borisno2! - # Add MCP Server for AI-Assisted Development

    New Features

    CLI Package (@opensaas/stack-cli)

    • New opensaas mcp command group for AI-assisted development:
      • opensaas mcp install - Install MCP server in Claude Code
      • opensaas mcp uninstall - Remove MCP server from Claude Code
      • opensaas mcp start - Start MCP server directly (for debugging)
    • Feature-driven development tools:
      • Interactive feature implementation wizards (authentication, blog, comments, file-upload, semantic-search)
      • Live documentation search from stack.opensaas.au
      • Code generation following OpenSaaS best practices
      • Smart feature suggestions based on your current app
      • Config validation
    • MCP tools available in Claude Code:
      • opensaas_implement_feature - Start feature wizard
      • opensaas_feature_docs - Search documentation
      • opensaas_list_features - Browse available features
      • opensaas_suggest_features - Get personalized recommendations
      • opensaas_validate_feature - Validate implementations

    create-opensaas-app

    • Interactive MCP setup prompt during project creation
    • Option to enable AI development tools automatically
    • Automatic installation of MCP server if user opts in
    • Helpful instructions if MCP installation is declined or fails

    Installation

    Enable AI development tools for an existing project:

    npx @opensaas/stack-cli mcp install

    Or during project creation:

    npm create opensaas-app@latest my-app
    # When prompted: Enable AI development tools? → yes

    Benefits

    • Build apps faster: Describe what you want to build, get complete implementations
    • Feature-driven development: Work with high-level features instead of low-level config
    • Best practices baked in: Generated code follows OpenSaaS Stack patterns
    • Live documentation: Always up-to-date docs from the official site
    • Single toolkit: All developer commands in one CLI

    Example Usage

    With Claude Code installed and the MCP server enabled, you can:

    You: "I want to build a food tracking app"
    
    Claude Code uses MCP tools to:
    1. Ask clarifying questions about requirements
    2. Implement authentication feature (wizard)
    3. Create custom Food and FoodLog lists
    4. Generate complete code with UI and access control
    5. Provide testing and deployment guidance
    
  • #132 fcf5cb8 Thanks @borisno2! - Upgrade to Prisma 7 with database adapter support

    Breaking Changes

    Required prismaClientConstructor

    Prisma 7 requires database adapters. All configs must now include prismaClientConstructor:

    import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3'
    import Database from 'better-sqlite3'
    
    export default config({
      db: {
        provider: 'sqlite',
        prismaClientConstructor: (PrismaClient) => {
          const db = new Database(process.env.DATABASE_URL || './dev.db')
          const adapter = new PrismaBetterSQLite3(db)
          return new PrismaClient({ adapter })
        },
      },
    })

    Removed url from DatabaseConfig

    The url field has been removed from the DatabaseConfig type. Database connection URLs are now passed directly to adapters in prismaClientConstructor:

    // ❌ Before (Prisma 6)
    db: {
      provider: 'sqlite',
      url: 'file:./dev.db',  // url in config
    }
    
    // ✅ After (Prisma 7)
    db: {
      provider: 'sqlite',
      prismaClientConstructor: (PrismaClient) => {
        const adapter = new PrismaBetterSQLite3({ url: './dev.db' })  // url in adapter
        return new PrismaClient({ adapter })
      },
    }

    Generated Schema Changes

    • Generator provider changed from prisma-client-js to prisma-client
    • Removed url field from datasource block
    • Database URL now passed via adapter in prismaClientConstructor

    Required Dependencies

    Install the appropriate adapter for your database:

    • SQLite: @prisma/adapter-better-sqlite3 + better-sqlite3
    • PostgreSQL: @prisma/adapter-pg + pg
    • MySQL: @prisma/adapter-mysql + mysql2

    Migration Steps

    1. Install Prisma 7 and adapter:

      pnpm add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3
      pnpm add -D prisma@7
    2. Update your opensaas.config.ts to include prismaClientConstructor (see example above)

    3. Regenerate schema and client:

      pnpm generate
      npx prisma generate
    4. Push schema to database:

      pnpm db:push

    See the updated documentation in CLAUDE.md for more examples including PostgreSQL and custom adapters.

Patch Changes

  • #107 f4f3966 Thanks @borisno2! - Add strict typing for plugin runtime services

    This change implements fully typed plugin runtime services, providing autocomplete and type safety for context.plugins throughout the codebase.

    Core Changes:

    • Extended Plugin type with optional runtimeServiceTypes metadata for type-safe code generation
    • Converted OpenSaasConfig and AccessContext from type to interface to enable module augmentation
    • Plugins can now declare their runtime service type information

    Auth Plugin:

    • Added AuthRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.auth.getUser() and context.plugins.auth.getCurrentUser()

    RAG Plugin:

    • Added RAGRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.rag.generateEmbedding() and context.plugins.rag.generateEmbeddings()

    CLI Generator:

    • Enhanced plugin types generator to import and use plugin runtime service types
    • Generated .opensaas/plugin-types.ts now includes proper type imports
    • PluginServices interface extends Record<string, Record<string, any> | undefined> for type compatibility
    • Maintains backwards compatibility with plugins that don't provide type metadata

    UI Package:

    • Updated AdminUI props to accept contexts with typed plugin services
    • Ensures compatibility between generated context types and UI components

    Benefits:

    • Full TypeScript autocomplete for all plugin runtime methods
    • Compile-time type checking catches errors early
    • Better IDE experience with hover documentation and jump-to-definition
    • Backwards compatible - third-party plugins without type metadata continue to work
    • Zero type errors in examples

    Example:

    const context = await getContext()
    
    // Fully typed with autocomplete
    context.plugins.auth.getUser('123') // (userId: string) => Promise<unknown>
    context.plugins.rag.generateEmbedding('text') // (text: string, providerName?: string) => Promise<number[]>
  • Updated dependencies [fcf5cb8, 3851a3c, f4f3966]:

    • @opensaas/stack-core@0.2.0

@opensaas/stack-core@0.2.0

Minor Changes

  • #132 fcf5cb8 Thanks @borisno2! - Upgrade to Prisma 7 with database adapter support

    Breaking Changes

    Required prismaClientConstructor

    Prisma 7 requires database adapters. All configs must now include prismaClientConstructor:

    import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3'
    import Database from 'better-sqlite3'
    
    export default config({
      db: {
        provider: 'sqlite',
        prismaClientConstructor: (PrismaClient) => {
          const db = new Database(process.env.DATABASE_URL || './dev.db')
          const adapter = new PrismaBetterSQLite3(db)
          return new PrismaClient({ adapter })
        },
      },
    })

    Removed url from DatabaseConfig

    The url field has been removed from the DatabaseConfig type. Database connection URLs are now passed directly to adapters in prismaClientConstructor:

    // ❌ Before (Prisma 6)
    db: {
      provider: 'sqlite',
      url: 'file:./dev.db',  // url in config
    }
    
    // ✅ After (Prisma 7)
    db: {
      provider: 'sqlite',
      prismaClientConstructor: (PrismaClient) => {
        const adapter = new PrismaBetterSQLite3({ url: './dev.db' })  // url in adapter
        return new PrismaClient({ adapter })
      },
    }

    Generated Schema Changes

    • Generator provider changed from prisma-client-js to prisma-client
    • Removed url field from datasource block
    • Database URL now passed via adapter in prismaClientConstructor

    Required Dependencies

    Install the appropriate adapter for your database:

    • SQLite: @prisma/adapter-better-sqlite3 + better-sqlite3
    • PostgreSQL: @prisma/adapter-pg + pg
    • MySQL: @prisma/adapter-mysql + mysql2

    Migration Steps

    1. Install Prisma 7 and adapter:

      pnpm add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3
      pnpm add -D prisma@7
    2. Update your opensaas.config.ts to include prismaClientConstructor (see example above)

    3. Regenerate schema and client:

      pnpm generate
      npx prisma generate
    4. Push schema to database:

      pnpm db:push

    See the updated documentation in CLAUDE.md for more examples including PostgreSQL and custom adapters.

  • #121 3851a3c Thanks @borisno2! - Add strongly-typed session support via module augmentation

    This change enables developers to define custom session types with full TypeScript autocomplete and type safety throughout their OpenSaas applications using the module augmentation pattern.

    Core Changes:

    • Converted Session from type to interface to enable module augmentation
    • Updated all session references to properly handle Session | null
    • Added comprehensive JSDoc documentation with module augmentation examples
    • Updated AccessControl, AccessContext, and access control engine to support nullable sessions
    • Added "Session Typing" section to core package documentation

    Auth Package:

    • Added "Session Type Safety" section to documentation
    • Documented how Better Auth users can create session type declarations
    • Provided step-by-step guide for matching sessionFields to TypeScript types
    • Created getSession() helper pattern for transforming Better Auth sessions

    Developer Experience:

    Developers can now augment the Session interface to get autocomplete everywhere:

    // types/session.d.ts
    import '@opensaas/stack-core'
    
    declare module '@opensaas/stack-core' {
      interface Session {
        userId?: string
        email?: string
        role?: 'admin' | 'user'
      }
    }

    This provides autocomplete in:

    • Access control functions
    • Hooks (resolveInput, validateInput, etc.)
    • Context object
    • Server actions

    Benefits:

    • Zero boilerplate - module augmentation provides types everywhere automatically
    • Full type safety for session properties
    • Autocomplete in all contexts that use session
    • Developer controls session shape (no assumptions about structure)
    • Works with any auth provider (Better Auth, custom, etc.)
    • Fully backward compatible - existing code continues to work
    • Follows TypeScript best practices (similar to NextAuth.js pattern)

    Example:

    // Before: No autocomplete
    const isAdmin: AccessControl = ({ session }) => {
      return session?.role === 'admin' // ❌ 'role' is 'unknown'
    }
    
    // After: Full autocomplete and type checking
    const isAdmin: AccessControl = ({ session }) => {
      return session?.role === 'admin' // ✅ Autocomplete + type checking
      //             ↑ Shows: userId, email, role
    }

    Migration:

    No migration required - this is a fully backward compatible change. Existing projects continue to work with untyped sessions. Projects can opt-in to typed sessions by creating a types/session.d.ts file with module augmentation.

Patch Changes

  • #107 f4f3966 Thanks @borisno2! - Add strict typing for plugin runtime services

    This change implements fully typed plugin runtime services, providing autocomplete and type safety for context.plugins throughout the codebase.

    Core Changes:

    • Extended Plugin type with optional runtimeServiceTypes metadata for type-safe code generation
    • Converted OpenSaasConfig and AccessContext from type to interface to enable module augmentation
    • Plugins can now declare their runtime service type information

    Auth Plugin:

    • Added AuthRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.auth.getUser() and context.plugins.auth.getCurrentUser()

    RAG Plugin:

    • Added RAGRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.rag.generateEmbedding() and context.plugins.rag.generateEmbeddings()

    CLI Generator:

    • Enhanced plugin types generator to import and use plugin runtime service types
    • Generated .opensaas/plugin-types.ts now includes proper type imports
    • PluginServices interface extends Record<string, Record<string, any> | undefined> for type compatibility
    • Maintains backwards compatibility with plugins that don't provide type metadata

    UI Package:

    • Updated AdminUI props to accept contexts with typed plugin services
    • Ensures compatibility between generated context types and UI components

    Benefits:

    • Full TypeScript autocomplete for all plugin runtime methods
    • Compile-time type checking catches errors early
    • Better IDE experience with hover documentation and jump-to-definition
    • Backwards compatible - third-party plugins without type metadata continue to work
    • Zero type errors in examples

    Example:

    const context = await getContext()
    
    // Fully typed with autocomplete
    context.plugins.auth.getUser('123') // (userId: string) => Promise<unknown>
    context.plugins.rag.generateEmbedding('text') // (text: string, providerName?: string) => Promise<number[]>

create-opensaas-app@0.2.0

Minor Changes

  • #107 f4f3966 Thanks @borisno2! - # Add MCP Server for AI-Assisted Development

    New Features

    CLI Package (@opensaas/stack-cli)

    • New opensaas mcp command group for AI-assisted development:
      • opensaas mcp install - Install MCP server in Claude Code
      • opensaas mcp uninstall - Remove MCP server from Claude Code
      • opensaas mcp start - Start MCP server directly (for debugging)
    • Feature-driven development tools:
      • Interactive feature implementation wizards (authentication, blog, comments, file-upload, semantic-search)
      • Live documentation search from stack.opensaas.au
      • Code generation following OpenSaaS best practices
      • Smart feature suggestions based on your current app
      • Config validation
    • MCP tools available in Claude Code:
      • opensaas_implement_feature - Start feature wizard
      • opensaas_feature_docs - Search documentation
      • opensaas_list_features - Browse available features
      • opensaas_suggest_features - Get personalized recommendations
      • opensaas_validate_feature - Validate implementations

    create-opensaas-app

    • Interactive MCP setup prompt during project creation
    • Option to enable AI development tools automatically
    • Automatic installation of MCP server if user opts in
    • Helpful instructions if MCP installation is declined or fails

    Installation

    Enable AI development tools for an existing project:

    npx @opensaas/stack-cli mcp install

    Or during project creation:

    npm create opensaas-app@latest my-app
    # When prompted: Enable AI development tools? → yes

    Benefits

    • Build apps faster: Describe what you want to build, get complete implementations
    • Feature-driven development: Work with high-level features instead of low-level config
    • Best practices baked in: Generated code follows OpenSaaS Stack patterns
    • Live documentation: Always up-to-date docs from the official site
    • Single toolkit: All developer commands in one CLI

    Example Usage

    With Claude Code installed and the MCP server enabled, you can:

    You: "I want to build a food tracking app"
    
    Claude Code uses MCP tools to:
    1. Ask clarifying questions about requirements
    2. Implement authentication feature (wizard)
    3. Create custom Food and FoodLog lists
    4. Generate complete code with UI and access control
    5. Provide testing and deployment guidance
    

@opensaas/stack-rag@0.2.0

Patch Changes

  • #132 fcf5cb8 Thanks @borisno2! - Upgrade to Prisma 7 with database adapter support

    Breaking Changes

    Required prismaClientConstructor

    Prisma 7 requires database adapters. All configs must now include prismaClientConstructor:

    import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3'
    import Database from 'better-sqlite3'
    
    export default config({
      db: {
        provider: 'sqlite',
        prismaClientConstructor: (PrismaClient) => {
          const db = new Database(process.env.DATABASE_URL || './dev.db')
          const adapter = new PrismaBetterSQLite3(db)
          return new PrismaClient({ adapter })
        },
      },
    })

    Removed url from DatabaseConfig

    The url field has been removed from the DatabaseConfig type. Database connection URLs are now passed directly to adapters in prismaClientConstructor:

    // ❌ Before (Prisma 6)
    db: {
      provider: 'sqlite',
      url: 'file:./dev.db',  // url in config
    }
    
    // ✅ After (Prisma 7)
    db: {
      provider: 'sqlite',
      prismaClientConstructor: (PrismaClient) => {
        const adapter = new PrismaBetterSQLite3({ url: './dev.db' })  // url in adapter
        return new PrismaClient({ adapter })
      },
    }

    Generated Schema Changes

    • Generator provider changed from prisma-client-js to prisma-client
    • Removed url field from datasource block
    • Database URL now passed via adapter in prismaClientConstructor

    Required Dependencies

    Install the appropriate adapter for your database:

    • SQLite: @prisma/adapter-better-sqlite3 + better-sqlite3
    • PostgreSQL: @prisma/adapter-pg + pg
    • MySQL: @prisma/adapter-mysql + mysql2

    Migration Steps

    1. Install Prisma 7 and adapter:

      pnpm add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3
      pnpm add -D prisma@7
    2. Update your opensaas.config.ts to include prismaClientConstructor (see example above)

    3. Regenerate schema and client:

      pnpm generate
      npx prisma generate
    4. Push schema to database:

      pnpm db:push

    See the updated documentation in CLAUDE.md for more examples including PostgreSQL and custom adapters.

  • #107 f4f3966 Thanks @borisno2! - Add strict typing for plugin runtime services

    This change implements fully typed plugin runtime services, providing autocomplete and type safety for context.plugins throughout the codebase.

    Core Changes:

    • Extended Plugin type with optional runtimeServiceTypes metadata for type-safe code generation
    • Converted OpenSaasConfig and AccessContext from type to interface to enable module augmentation
    • Plugins can now declare their runtime service type information

    Auth Plugin:

    • Added AuthRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.auth.getUser() and context.plugins.auth.getCurrentUser()

    RAG Plugin:

    • Added RAGRuntimeServices interface defining runtime service types
    • Exported runtime types from package
    • Users now get full autocomplete for context.plugins.rag.generateEmbedding() and context.plugins.rag.generateEmbeddings()

    CLI Generator:

    • Enhanced plugin types generator to import and use plugin runtime service types
    • Generated .opensaas/plugin-types.ts now includes proper type imports
    • PluginServices interface extends Record<string, Record<string, any> | undefined> for type compatibility
    • Maintains backwards compatibility with plugins that don't provide type metadata

    UI Package:

    • Updated AdminUI props to accept contexts with typed plugin services
    • Ensures compatibility between generated context types and UI components

    Benefits:

    • Full TypeScript autocomplete for all plugin runtime methods
    • Compile-time type checking catches errors early
    • Better IDE experience with hover documentation and jump-to-definition
    • Backwards compatible - third-party plugins without type metadata continue to work
    • Zero type errors in examples

    Example:

    const context = await getContext()
    
    // Fully typed with autocomplete
    context.plugins.auth.getUser('123') // (userId: string) => Promise<unknown>
    context.plugins.rag.generateEmbedding('text') // (text: string, providerName?: string) => Promise<number[]>

@opensaas/stack-storage-s3@0.2.0

Patch Changes

  • Updated dependencies []:
    • @opensaas/stack-storage@0.2.0

@opensaas/stack-storage-vercel@0.2.0

Patch Changes

  • Updated dependencies []:
    • @opensaas/stack-storage@0.2.0

@opensaas/stack-storage@0.2.0

@opensaas/stack-tiptap@0.2.0

@opensaas/stack-ui@0.2.0

@vercel
Copy link
Copy Markdown

vercel bot commented Nov 15, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
stack-docs Ready Ready Preview Comment Nov 23, 2025 10:08am

@github-actions github-actions bot force-pushed the changeset-release/main branch 3 times, most recently from 6d17e66 to 3fadad9 Compare November 15, 2025 11:15
@github-actions github-actions bot force-pushed the changeset-release/main branch 3 times, most recently from e6b86c9 to 75c6f64 Compare November 18, 2025 06:22
@github-actions github-actions bot force-pushed the changeset-release/main branch from 75c6f64 to cd00e88 Compare November 18, 2025 07:15
@github-actions github-actions bot force-pushed the changeset-release/main branch from cd00e88 to 8930ee4 Compare November 21, 2025 09:51
@github-actions github-actions bot force-pushed the changeset-release/main branch from 8930ee4 to 9a365b2 Compare November 21, 2025 09:52
@github-actions github-actions bot force-pushed the changeset-release/main branch 5 times, most recently from 9f287b0 to 8d1a597 Compare November 21, 2025 09:54
@github-actions github-actions bot force-pushed the changeset-release/main branch from 8d1a597 to 32f9a16 Compare November 21, 2025 10:27
@github-actions github-actions bot force-pushed the changeset-release/main branch 3 times, most recently from 3007f1d to 3839e40 Compare November 21, 2025 11:04
@github-actions github-actions bot force-pushed the changeset-release/main branch from 3839e40 to b8be190 Compare November 21, 2025 21:39
@github-actions github-actions bot force-pushed the changeset-release/main branch from f369e77 to 237965d Compare November 23, 2025 10:08
@borisno2 borisno2 merged commit 58ba523 into main Nov 23, 2025
2 of 3 checks passed
@borisno2 borisno2 deleted the changeset-release/main branch November 23, 2025 10:08
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.

1 participant