Skip to content

Releases: sendbird/sendbird-ios-distribution

SendbirdAIAgentMessenger-v1.0.0

25 Sep 08:57
06b225e
Compare
Choose a tag to compare

Sendbird AI Agent iOS SDK - GA Release Changelog

v1.0.0 (Sep 25, 2025)

Highlights

  • AI Agent Chat: Engage in natural, context-aware conversations with an AI agent, including real-time messaging and conversation list functionality.
  • Messenger Launcher Widget: Easily add a floating launcher button to your app's interface for quick access to AI chat.
  • Full-Screen Messenger: Launch full-screen chat conversations with the AI agent through dedicated screens.
  • Rich Message Templates: Support for various interactive message formats through structured templates including buttons, cards, lists, and more.
  • Easy Integration: Initialize and launch the AI agent messenger with just a few lines of code.
  • Markdown & Code Syntax Highlighting: Comprehensive markdown text rendering with syntax highlighting for code blocks.
  • Multi-language Support: Built-in support for 11 languages with the ability to extend to additional languages through custom localization.
  • Complete Theme System: Provides a foundational theme system including light/dark mode, with ongoing expansion to add richer customization options.
  • Modular Architecture: Flexible module system allowing complete customization of UI components.

Requirements

The minimum requirements for AI Agent for iOS are:

  • iOS 14.0 or higher
  • Swift 5.10 or higher
  • Xcode 16.3 or higher
  • SendbirdChatSDK 4.30.0 or higher
  • SendbirdUIMessageTemplate 3.32.2 or higher

Installation

The SDK can be installed through various package managers.

Swift Package Manager (SPM)

dependencies: [
    .package(url: "https://github.com/sendbird/sendbird-ai-agent-messenger-ios.git", from: "1.0.0")
]

CocoaPods

source 'https://github.com/sendbird/sendbird-ios-distribution.git'
source 'https://cdn.cocoapods.org/'

platform :ios, '15.0'

target 'YourApp' do
  use_frameworks!

  pod 'SendbirdAIAgentMessenger', '~> 1.0.0'
end

# Required for XCFramework download scripts
post_install do |installer|
  project = installer.aggregate_targets[0].user_project
  project.targets.each do |target|
      target.build_configurations.each do |config|
          config.build_settings['ENABLE_USER_SCRIPT_SANDBOXING'] = 'NO'
      end
  end
  project.save
end

Features

Sendbird AI Agent Messenger SDK has been officially released!
This SDK enables you to seamlessly integrate an enterprise-grade AI-powered chat agent into your iOS applications.

1. Messenger Launcher Widget

The SDK provides MessengerLauncher functionality that can be easily attached to your application's root view programmatically.

To add the MessengerLauncher to your screen, simply call the attachLauncher() function specifying the AI agent ID:

AIAgentMessenger.attachLauncher(aiAgentId: "your_ai_agent_id")
  • Configure the Launcher's behavior and appearance through SBALauncherOptions:
    • entryPoint: Specify which screen to open from the launcher

      • conversation: Navigate directly to conversation screen (default)
      • conversationList: Navigate to conversation list screen
    • layout.position: Determine which corner of the screen the launcher appears in

      • leadingTop: Top left
      • trailingTop: Top right
      • leadingBottom: Bottom left
      • trailingBottom: Bottom right (default)
    • layout.margin: Set margins around the launcher button

    • layout.useSafeArea: Configure safe area usage

    • displayStyle: Set messenger display mode

      • fullscreen: Display in full-screen mode
      • overlay: Display as overlay (default)
    • context: Key-value dictionary for passing conversation context information

Attach the launcher to your activity or view to create a floating entry point for AI chat.


2. Full-Screen Messenger

You can open full-screen conversations.

// Present conversation screen
AIAgentMessenger.presentConversation(aiAgentId: "your_ai_agent_id")

// Or present conversation list screen
AIAgentMessenger.presentConversationList(aiAgentId: "your_ai_agent_id")

3. Rich Message Templates

Support for various interactive elements through structured message templates including buttons, cards, lists, and more.


4. Easy Integration

Initialize and launch the AI agent messenger with just a few lines of code.

// Create new conversation
AIAgentMessenger.createConversation(aiAgentId: "your_ai_agent_id") { result in
    switch result {
    case .success(let channelURL):
        // Conversation creation successful
    case .failure(let error):
        // Conversation creation failed
    }
}

5. Markdown & Code Syntax Highlighting

Provides advanced text rendering capabilities including markdown text rendering and code block syntax highlighting.


6. Multi-language Support

Supports global application development through a multi-language support system.

  • Built-in 11 Language Support: Korean, English, Japanese, German, Spanish, Italian, French, Dutch, Portuguese, Turkish, Hindi
  • Extensible Localization: Custom localization system for additional language support
  • Dynamic Language Switching: Real-time language changes within the app
  • Language-specific Optimization: Automatic font and layout adjustments for each language
  • Developer-friendly: Easy extension following standard iOS localization patterns

7. Complete Theme System

Provides a foundational theme system including light/dark mode. Future updates will add richer customization options.

// Update color scheme
AIAgentMessenger.update(colorScheme: .dark)

// Font customization
SBAFontSet.fontFamily = "YourCustomFont"
  • Basic Theme Support: Automatic light/dark mode switching
  • Font Customization: Custom font family support through SBAFontSet
  • Ongoing Expansion: Gradual addition of brand-specific color and style options

8. Modular Architecture

Flexible module system allows complete customization of UI components.

  • MVVM Pattern: Clean separation of concerns
  • Event-driven Communication: Delegate, DataSource, HandleEvent patterns
  • Module Replacement: Easy UI customization through simple module replacement
  • @LayoutSlot Pattern: Declarative UI composition

9. Session Management and Authentication

The SDK supports flexible user authentication through two session types.

Authenticated Users (Manual Session)

// Create session info for authenticated users
let sessionInfo = AIAgentMessenger.SessionInfo.manual(
    userId: "user123",
    sessionToken: "your_session_token",
    sessionDelegate: self // Implement SessionDelegate protocol
)

// Update session information
AIAgentMessenger.updateSessionInfo(with: sessionInfo)

// Authenticate with AI agent
AIAgentMessenger.authenticate(aiAgentId: "your_ai_agent_id") { result in
    switch result {
    case .success(let activeChannelURL):
        // Authentication successful
    case .failure(let error):
        // Authentication failed
    }
}

Anonymous Users (Anonymous Session)

// Create session info for anonymous users (app attribute settings required)
let anonymousSessionInfo = AIAgentMessenger.SessionInfo.anonymous()

// Update session information
AIAgentMessenger.updateSessionInfo(with: anonymousSessionInfo)

// Authenticate with AI agent (same method)
AIAgentMessenger.authenticate(aiAgentId: "your_ai_agent_id") { result in
    // Handle authentication
}

Note: To use Anonymous Session, app attribute settings must be enabled in the Sendbird dashboard.


Architecture

Modular Architecture

  • MVVM Pattern: Clean separation of concerns
  • Event-driven Communication: Delegate, DataSource, HandleEvent patterns
  • Module System: Flexible customization through SBAModuleSet
  • @LayoutSlot Pattern: Declarative UI composition

Key Components

  • AIAgentMessenger: Main public API
  • SBAModuleSet: Customizable module system
  • SBATheme: Comprehensive theme management

Known Issues

  • Limited support for some SwiftUI features on iOS 14.0

Support


This release is the first GA (Generally Available) version of the Sendbird AI Agent iOS SDK. It is safe for use in production environments.

SendbirdAIAgentCore-v1.0.0

25 Sep 08:57
06b225e
Compare
Choose a tag to compare

Sendbird AI Agent iOS SDK - GA Release Changelog

v1.0.0 (Sep 25, 2025)

Highlights

  • AI Agent Chat: Engage in natural, context-aware conversations with an AI agent, including real-time messaging and conversation list functionality.
  • Messenger Launcher Widget: Easily add a floating launcher button to your app's interface for quick access to AI chat.
  • Full-Screen Messenger: Launch full-screen chat conversations with the AI agent through dedicated screens.
  • Rich Message Templates: Support for various interactive message formats through structured templates including buttons, cards, lists, and more.
  • Easy Integration: Initialize and launch the AI agent messenger with just a few lines of code.
  • Markdown & Code Syntax Highlighting: Comprehensive markdown text rendering with syntax highlighting for code blocks.
  • Multi-language Support: Built-in support for 11 languages with the ability to extend to additional languages through custom localization.
  • Complete Theme System: Provides a foundational theme system including light/dark mode, with ongoing expansion to add richer customization options.
  • Modular Architecture: Flexible module system allowing complete customization of UI components.

Requirements

The minimum requirements for AI Agent for iOS are:

  • iOS 14.0 or higher
  • Swift 5.10 or higher
  • Xcode 16.3 or higher
  • SendbirdChatSDK 4.30.0 or higher
  • SendbirdUIMessageTemplate 3.32.2 or higher

Installation

The SDK can be installed through various package managers.

Swift Package Manager (SPM)

dependencies: [
    .package(url: "https://github.com/sendbird/sendbird-ai-agent-messenger-ios.git", from: "1.0.0")
]

CocoaPods

source 'https://github.com/sendbird/sendbird-ios-distribution.git'
source 'https://cdn.cocoapods.org/'

platform :ios, '15.0'

target 'YourApp' do
  use_frameworks!

  pod 'SendbirdAIAgentMessenger', '~> 1.0.0'
end

# Required for XCFramework download scripts
post_install do |installer|
  project = installer.aggregate_targets[0].user_project
  project.targets.each do |target|
      target.build_configurations.each do |config|
          config.build_settings['ENABLE_USER_SCRIPT_SANDBOXING'] = 'NO'
      end
  end
  project.save
end

Features

Sendbird AI Agent Messenger SDK has been officially released!
This SDK enables you to seamlessly integrate an enterprise-grade AI-powered chat agent into your iOS applications.

1. Messenger Launcher Widget

The SDK provides MessengerLauncher functionality that can be easily attached to your application's root view programmatically.

To add the MessengerLauncher to your screen, simply call the attachLauncher() function specifying the AI agent ID:

AIAgentMessenger.attachLauncher(aiAgentId: "your_ai_agent_id")
  • Configure the Launcher's behavior and appearance through SBALauncherOptions:
    • entryPoint: Specify which screen to open from the launcher

      • conversation: Navigate directly to conversation screen (default)
      • conversationList: Navigate to conversation list screen
    • layout.position: Determine which corner of the screen the launcher appears in

      • leadingTop: Top left
      • trailingTop: Top right
      • leadingBottom: Bottom left
      • trailingBottom: Bottom right (default)
    • layout.margin: Set margins around the launcher button

    • layout.useSafeArea: Configure safe area usage

    • displayStyle: Set messenger display mode

      • fullscreen: Display in full-screen mode
      • overlay: Display as overlay (default)
    • context: Key-value dictionary for passing conversation context information

Attach the launcher to your activity or view to create a floating entry point for AI chat.


2. Full-Screen Messenger

You can open full-screen conversations.

// Present conversation screen
AIAgentMessenger.presentConversation(aiAgentId: "your_ai_agent_id")

// Or present conversation list screen
AIAgentMessenger.presentConversationList(aiAgentId: "your_ai_agent_id")

3. Rich Message Templates

Support for various interactive elements through structured message templates including buttons, cards, lists, and more.


4. Easy Integration

Initialize and launch the AI agent messenger with just a few lines of code.

// Create new conversation
AIAgentMessenger.createConversation(aiAgentId: "your_ai_agent_id") { result in
    switch result {
    case .success(let channelURL):
        // Conversation creation successful
    case .failure(let error):
        // Conversation creation failed
    }
}

5. Markdown & Code Syntax Highlighting

Provides advanced text rendering capabilities including markdown text rendering and code block syntax highlighting.


6. Multi-language Support

Supports global application development through a multi-language support system.

  • Built-in 11 Language Support: Korean, English, Japanese, German, Spanish, Italian, French, Dutch, Portuguese, Turkish, Hindi
  • Extensible Localization: Custom localization system for additional language support
  • Dynamic Language Switching: Real-time language changes within the app
  • Language-specific Optimization: Automatic font and layout adjustments for each language
  • Developer-friendly: Easy extension following standard iOS localization patterns

7. Complete Theme System

Provides a foundational theme system including light/dark mode. Future updates will add richer customization options.

// Update color scheme
AIAgentMessenger.update(colorScheme: .dark)

// Font customization
SBAFontSet.fontFamily = "YourCustomFont"
  • Basic Theme Support: Automatic light/dark mode switching
  • Font Customization: Custom font family support through SBAFontSet
  • Ongoing Expansion: Gradual addition of brand-specific color and style options

8. Modular Architecture

Flexible module system allows complete customization of UI components.

  • MVVM Pattern: Clean separation of concerns
  • Event-driven Communication: Delegate, DataSource, HandleEvent patterns
  • Module Replacement: Easy UI customization through simple module replacement
  • @LayoutSlot Pattern: Declarative UI composition

9. Session Management and Authentication

The SDK supports flexible user authentication through two session types.

Authenticated Users (Manual Session)

// Create session info for authenticated users
let sessionInfo = AIAgentMessenger.SessionInfo.manual(
    userId: "user123",
    sessionToken: "your_session_token",
    sessionDelegate: self // Implement SessionDelegate protocol
)

// Update session information
AIAgentMessenger.updateSessionInfo(with: sessionInfo)

// Authenticate with AI agent
AIAgentMessenger.authenticate(aiAgentId: "your_ai_agent_id") { result in
    switch result {
    case .success(let activeChannelURL):
        // Authentication successful
    case .failure(let error):
        // Authentication failed
    }
}

Anonymous Users (Anonymous Session)

// Create session info for anonymous users (app attribute settings required)
let anonymousSessionInfo = AIAgentMessenger.SessionInfo.anonymous()

// Update session information
AIAgentMessenger.updateSessionInfo(with: anonymousSessionInfo)

// Authenticate with AI agent (same method)
AIAgentMessenger.authenticate(aiAgentId: "your_ai_agent_id") { result in
    // Handle authentication
}

Note: To use Anonymous Session, app attribute settings must be enabled in the Sendbird dashboard.


Architecture

Modular Architecture

  • MVVM Pattern: Clean separation of concerns
  • Event-driven Communication: Delegate, DataSource, HandleEvent patterns
  • Module System: Flexible customization through SBAModuleSet
  • @LayoutSlot Pattern: Declarative UI composition

Key Components

  • AIAgentMessenger: Main public API
  • SBAModuleSet: Customizable module system
  • SBATheme: Comprehensive theme management

Known Issues

  • Limited support for some SwiftUI features on iOS 14.0

Support


This release is the first GA (Generally Available) version of the Sendbird AI Agent iOS SDK. It is safe for use in production environments.

SendbirdMarkdownUI-v1.0.2

24 Sep 07:25
f6955dc
Compare
Choose a tag to compare

Expanded and Improved Markdown Syntax

Summary

This PR adds comprehensive HTML block element support to MarkdownUI, enabling proper rendering of HTML tables, lists, headings, code blocks, and blockquotes alongside existing Markdown syntax. Additionally includes major stability and iOS 14/15 compatibility improvements to ensure reliable operation across all supported iOS versions.

Problems Solved

HTML Block Support

  • HTML tables displayed as plain text: HTML <table> elements were not parsed and appeared as raw HTML text
  • iOS 15 Markdown table parsing disabled: Table extension was only enabled for iOS 16+, causing Markdown tables to fail parsing on iOS 15
  • HTML block elements unsupported: All HTML block elements (<ul>, <h1>, <blockquote>, etc.) were rendered as plain text

Stability & Compatibility Issues

  • UnderlineStyle not working: Links and other underlined text not displaying properly
  • Runtime crash risks: Force casting and unsafe operations causing app crashes
  • FontProperties nil access: Font styling not applied due to uninitialized properties
  • iOS 14 color conversion failures: SwiftUI Color to UIColor conversions failing on iOS 14
  • Incomplete attribute mapping: Text styling inconsistencies between iOS versions

Changes Made

Core Parser Enhancement

File: MarkdownParser.swift

  • Removed iOS version restriction for table extension
  • Enabled "table" extension for all iOS versions (14+)
  • 🆕 Replaced all fatalError calls with safe fallback handling
  • 🆕 Added debug warnings for unexpected parser conditions
  • 🆕 Fixed force unwrapping of asciiValue with nil coalescing

HTML Block Processing

File: BlockNode+View.swift

  • Extended .htmlBlock case to handle 6 HTML types
  • Added 10 new functions for HTML detection and parsing
  • Implemented proper iOS version branching for optimal rendering

Text Styling Improvements

Files: UnderlineStyle.swift, Theme+GitHub.swift

  • 🆕 Fixed UnderlineStyle not working by correcting CompatLineStyle usage
  • 🆕 Added proper indentation for Theme DSL chaining

File: TextStyle.swift

  • 🆕 Added comprehensive property mapping between AttributeContainer types
  • 🆕 Added bidirectional conversion for underlineStyle, strikethroughStyle
  • 🆕 Mapped kern, baselineOffset, link, tracking properties

Safety & Compatibility Enhancements

File: InlineText.swift

  • 🆕 Replaced unsafe force casting (as!) with safe optional casting (as?)
  • 🆕 Added proper fallback handling for type conversion failures

Files: FontDigitVariant.swift, FontCapsVariant.swift, FontWeight.swift, etc.

  • 🆕 Added nil checks and initialization for FontProperties across all font styles
  • 🆕 Ensured font styling works properly on all iOS versions

File: CompatAttributeContainer.swift

  • 🆕 Initialize container with default FontProperties to prevent nil access

Files: ForegroundColor.swift, BackgroundColor.swift

  • 🆕 Added iOS 15+ availability checks for UIColor(Color) conversions
  • 🆕 Provided safe fallbacks for iOS 14 color handling

Supported HTML Types

HTML Element Example Renders As iOS 14-15 iOS 16+
<table> <table><tr><td>data</td></tr></table> CompatTableView / TableView VStack+HStack Grid-based
<ul> <ul><li>item</li></ul> BulletedListView Supported Supported
<ol> <ol><li>item</li></ol> NumberedListView Supported Supported
<h1>-<h6> <h1>Title</h1> HeadingView Supported Supported
<pre><code> <pre><code>code</code></pre> CodeBlockView Supported Supported
<blockquote> <blockquote>quote</blockquote> BlockquoteView Supported Supported

Technical Implementation

HTML Detection Functions

private func isHTMLTable(_ html: String) -> Bool
private func isHTMLList(_ html: String) -> Bool
private func isHTMLHeading(_ html: String) -> Bool
private func isHTMLCode(_ html: String) -> Bool
private func isHTMLBlockquote(_ html: String) -> Bool

HTML Parsing Functions

private func parseHTMLTable(_ html: String) -> some View
private func parseHTMLList(_ html: String) -> some View
private func parseHTMLHeading(_ html: String) -> some View
private func parseHTMLCode(_ html: String) -> some View
private func parseHTMLBlockquote(_ html: String) -> some View

Content Extraction Functions

private func extractTableData(from html: String) -> (alignments: [RawTableColumnAlignment], rows: [RawTableRow])
private func extractListItems(from html: String) -> [RawListItem]
private func extractHeading(from html: String) -> (level: Int, content: String)
private func extractCodeContent(from html: String) -> String
private func extractBlockquoteContent(from html: String) -> String
private func extractDirectTextOnly(from html: String) -> String

iOS Compatibility & Stability

iOS 14-15: Enhanced Compatibility

  • Safe color conversion handling: Prevents crashes from unsupported Color APIs
  • Comprehensive font property support: All font styling now works reliably
  • Safe fallback handling: Parser no longer crashes on unexpected input
  • Uses existing CompatTableView and CompatTableCell
  • VStack + HStack layout instead of Grid
  • Full feature parity with newer versions

iOS 16+: Modern TableView

  • Leverages Grid-based TableView for optimal performance
  • Additional features like ImageFlow support
  • Proper attribute mapping: Consistent styling across all iOS versions

Cross-Version Reliability

  • 🆕 No more force casting: All type conversions use safe optional casting
  • 🆕 FontProperties always initialized: Prevents nil access issues
  • 🆕 Debug warnings instead of crashes: Parser continues operation on unexpected input
  • 🆕 Complete attribute synchronization: Text styling consistent across iOS versions

Text Styling Improvements

Fixed Issues

  • UnderlineStyle now works properly: Links and underlined text display correctly
  • Font properties always applied: Weight, size, style consistently work across iOS versions
  • Color handling improved: Safe conversion between SwiftUI Color and UIColor/NSColor
  • Attribute mapping complete: All text styling properties properly synchronized

Before vs After

Feature Before After
Link underlines ❌ Not displayed ✅ Properly underlined
Font weight ❌ Sometimes ignored ✅ Always applied
Text colors ❌ iOS 14 crashes ✅ Safe fallbacks
Parser errors ❌ App crashes ✅ Debug warnings + continue

Nested HTML Handling

For nested HTML structures (e.g., nested lists), the implementation:

  1. Detects nested <ul>/<ol> tags within list items
  2. Removes nested HTML tags to prevent display issues
  3. Extracts direct text content only
  4. Renders as clean, flat list structure

Style Consistency

HTML elements now render identically to their Markdown equivalents:

Feature Markdown HTML Result
Table | header | data | <table><tr><td>data</td></tr></table> Identical table styling
List - item <ul><li>item</li></ul> Identical list styling
Heading # title <h1>title</h1> Identical heading styling
Code ```code``` <pre><code>code</code></pre> Identical code block styling
Quote > quote <blockquote>quote</blockquote> Identical blockquote styling

Testing

Created test.md file with comprehensive examples comparing Markdown and HTML syntax side-by-side to verify identical rendering results.

🆕 Additional stability testing:

  • Verified safe handling of malformed HTML input
  • Confirmed proper fallback behavior on all iOS versions
  • Tested font styling consistency across iOS 14-16
  • Validated color conversion safety on iOS 14

Limitations

  • Nested HTML structures: Complex nested elements are flattened
  • Inline HTML: <code>, <span> and other inline elements not supported
  • HTML attributes: class, id, style attributes are ignored
  • Custom HTML: Only standard HTML5 block elements supported

Backward Compatibility

  • ✅ No breaking changes to existing API
  • ✅ All existing Markdown functionality preserved
  • ✅ HTML elements gracefully fall back to text display if unsupported
  • ✅ Full iOS 14+ compatibility maintained
  • 🆕 Enhanced stability: Reduced crash risks and improved error handling

Performance Impact

  • Minimal performance impact through reuse of existing MarkdownUI components
  • No new view types created
  • Efficient regex-based HTML parsing
  • Proper iOS version branching for optimal performance
  • 🆕 Safer operations: Reduced runtime overhead from crash prevention

Key Benefits

For Users

  • 📱 HTML content renders properly instead of showing raw HTML text
  • 🎨 Consistent styling between Markdown and HTML elements
  • 💪 More stable app experience with reduced crash risks
  • ⚡ Better performance on iOS 14 with proper compatibility handling

For Developers

  • 🛡️ Defensive programming: Safe fallbacks prevent production crashes
  • 🔧 Better debugging: Debug warnings instead of silent failures
  • 📊 Consistent behavior: Reliable text styling across all iOS versions
  • 🏗️ Maintainable code: Proper error handling and type safety

Issue


**🎯 This PR not only a...

Read more

SendbirdAIAgentMessenger-v0.10.10

09 Sep 09:37
c776dca
Compare
Choose a tag to compare

Public API Changes

  • Exposed contentAlignment property in SBAConfig.ConversationList.Header and SBAConfig.Conversation.Header as public
    • Allows external customization of header content alignment in conversation and conversation list modules
  • Font properties are now public
    • Several font-related properties and accessors were changed to public, allowing external modules to read and modify font settings
  • FontFamily is now exposed
    • The FontFamily type and relevant configuration points are now public for broader customization

Features

  • Introduced alignment customization for conversation headers - Developers can now set header alignment to leading, center, or trailing via configuration

Bug Fixes

  • Fixed layout issues for centered header content - Ensures headers properly center their content when configured
  • Resolved inconsistencies in header padding and spacing - Unified constants and logic for more predictable UI presentation
  • Theme synchronization fix
    • Resolved issues where font or theme changes in DefaultTheme and MessengerInfo were not properly synced
  • Markdown bullet point syntax alignment issue fix
    • Fixed an issue where Markdown bullet points were centered within the entire content

How to Customize Fonts

You can customize fonts in the following ways:

  1. Using Public Properties

    • Access and set font properties directly on SBAFont:
    SBAFontSet.h1 = UIFont.systemFont(ofSize: 20, weight: .bold)
    SBAFontSet.h2 = UIFont.systemFont(ofSize: 18, weight: .semibold)
    SBAFontSet.body1 = UIFont.systemFont(ofSize: 16, weight: .regular)
    SBAFontSet.button1 = UIFont.systemFont(ofSize: 16, weight: .bold)
    SBAFontSet.caption1 = UIFont.systemFont(ofSize: 12, weight: .medium)     
  2. FontFamily Customization

    • Assign a new FontFamily to global fontSet:
    // Set font family globally for all fonts
    SBAFontSet.fontFamily = "Avenir"

SendbirdAIAgentCore-v0.10.10

09 Sep 09:36
c776dca
Compare
Choose a tag to compare

Public API Changes

  • Exposed contentAlignment property in SBAConfig.ConversationList.Header and SBAConfig.Conversation.Header as public
    • Allows external customization of header content alignment in conversation and conversation list modules
  • Font properties are now public
    • Several font-related properties and accessors were changed to public, allowing external modules to read and modify font settings
  • FontFamily is now exposed
    • The FontFamily type and relevant configuration points are now public for broader customization

Features

  • Introduced alignment customization for conversation headers - Developers can now set header alignment to leading, center, or trailing via configuration

Bug Fixes

  • Fixed layout issues for centered header content - Ensures headers properly center their content when configured
  • Resolved inconsistencies in header padding and spacing - Unified constants and logic for more predictable UI presentation
  • Theme synchronization fix
    • Resolved issues where font or theme changes in DefaultTheme and MessengerInfo were not properly synced
  • Markdown bullet point syntax alignment issue fix
    • Fixed an issue where Markdown bullet points were centered within the entire content

How to Customize Fonts

You can customize fonts in the following ways:

  1. Using Public Properties

    • Access and set font properties directly on SBAFont:
    SBAFontSet.h1 = UIFont.systemFont(ofSize: 20, weight: .bold)
    SBAFontSet.h2 = UIFont.systemFont(ofSize: 18, weight: .semibold)
    SBAFontSet.body1 = UIFont.systemFont(ofSize: 16, weight: .regular)
    SBAFontSet.button1 = UIFont.systemFont(ofSize: 16, weight: .bold)
    SBAFontSet.caption1 = UIFont.systemFont(ofSize: 12, weight: .medium)     
  2. FontFamily Customization

    • Assign a new FontFamily to global fontSet:
    // Set font family globally for all fonts
    SBAFontSet.fontFamily = "Avenir"

SendbirdAIAgentMessenger-v0.10.9

03 Sep 08:18
149feff
Compare
Choose a tag to compare

Public API Changes

  • SBAViewModelSet.ConversationViewModel is now public - Allows external customization of conversation view models
  • SBAConversationViewModel class and its delegate methods are now public - Enables subclassing and custom implementations
  • SBAConversationViewController.viewModel and channel properties are now public - Provides public access to conversation state

Features

  • Added reset() functionality to conversation components - Enables starting new conversations without navigation controller

Improvements

  • Enhanced conversation initialization - Refactored SBAConversationViewModel to use builder pattern for initialization parameters
  • Improved "Start New Conversation" flow - Fixed behavior when using ViewControllerSet without navigation controller

Bug Fixes

  • Fixed conversation reset when starting new conversation - Properly resets header, list, and input components
  • Fixed navigation handling for non-navigation controller scenarios - Gracefully handles cases without AIAgentNavigationController

SendbirdAIAgentCore-v0.10.9

03 Sep 08:18
149feff
Compare
Choose a tag to compare

Public API Changes

  • SBAViewModelSet.ConversationViewModel is now public - Allows external customization of conversation view models
  • SBAConversationViewModel class and its delegate methods are now public - Enables subclassing and custom implementations
  • SBAConversationViewController.viewModel and channel properties are now public - Provides public access to conversation state

Features

  • Added reset() functionality to conversation components - Enables starting new conversations without navigation controller

Improvements

  • Enhanced conversation initialization - Refactored SBAConversationViewModel to use builder pattern for initialization parameters
  • Improved "Start New Conversation" flow - Fixed behavior when using ViewControllerSet without navigation controller

Bug Fixes

  • Fixed conversation reset when starting new conversation - Properly resets header, list, and input components
  • Fixed navigation handling for non-navigation controller scenarios - Gracefully handles cases without AIAgentNavigationController

SendbirdAIAgentMessenger-v0.10.8

01 Sep 17:02
1c95ea0
Compare
Choose a tag to compare

Improvements

  • Added InitParamsBuilder for SBAConversationViewController
SBAViewControllerSet.ConversationViewController.init(
  aiAgentId: "YOUR_AI_AGENT_ID",
  paramsBuilder: { params in
    params.language = "ko"
    params.countryCode = "KR"
    params.context = [:]
  }
)

SendbirdAIAgentCore-v0.10.8

01 Sep 17:02
1c95ea0
Compare
Choose a tag to compare

Improvements

  • Added InitParamsBuilder for SBAConversationViewController
SBAViewControllerSet.ConversationViewController.init(
  aiAgentId: "YOUR_AI_AGENT_ID",
  paramsBuilder: { params in
    params.language = "ko"
    params.countryCode = "KR"
    params.context = [:]
  }
)

SendbirdAIAgentMessenger-v0.10.7

31 Aug 17:40
453db89
Compare
Choose a tag to compare

Features

  • Conversation Module Customization

    • Made SBAConversationModule.List.Cell public with customizable subviews:
      • UserNameView
      • StateView
      • DateView
    • Added public access to message cell types:
      • AdminMessageCell
      • UserMessageCell
      • FileMessageCell
      • TypingIndicatorMessageCell
      • UnknownMessageCell
  • Header Configuration

    • Added ContentAlignment enum in SBAConfig.Conversation.Header for content alignment control
      • Supports .leading, .center, .trailing alignment options
    • Added contentAlignment property (default: .leading)

Improvements

  • Common
    • Improved memory management with proper cleanup in deinit methods
    • Enhanced null safety with optional handling

Bug Fixes

  • View Lifecycle

    • Fixed potential crash in SBAFileViewController when dismissing
    • Added safety checks for view controller state before animations
    • Fixed infinite recursion in setupStyles()
  • Layout Issues

    • Fixed constraint activation timing issues
    • Fixed markdown view layout with proper max width handling