Skip to content

Releases: peterfriese/ConversationKit

v0.1.0 - Gemini-style "Sticky Top" Scrolling & Progressive Disclosure UX

09 Apr 13:30
7c02ed8

Choose a tag to compare

🚀 New Features

  • "Push and Pin" Scrolling Physics: Implements a custom, optimistic layout anchor system. When you send a message, the view smoothly anchors the message and pushes it upward as the AI response streams in, finally pinning it gracefully to the top of the screen.
  • Progressive Disclosure APIs: Introduces new environment modifiers that let you inject custom views without cluttering initializers:
    • .messageActions: Inject custom toolbars (Thumbs Up/Down, Copy) below AI messages.
    • .conversationDisclaimer: Inject custom privacy text below the most recent AI message.
  • Interruptible Generation: Tracks execution state within MessageComposerView. While a generation task runs, the composer transforms the "Send" button into an active "Stop" button that supports cooperative task cancellation.

💄 UI Improvements

  • Distinct Chat Bubbles: Updates the user message bubble to use an UnevenRoundedRectangle, giving it a distinct "tail" effect. The library now renders AI messages directly into the view without a background bubble.
  • Smart Loading State: Automatically renders a bouncing-dot TypingIndicator if you temporarily add an AI message with content == nil.
  • High-Contrast Disabled State: Relies strictly on native platform styling for the empty composer "Send" button, ensuring high-contrast accessibility in both Light and Dark modes.
  • Proportional Stop Icon: Scales the font size of the stop.fill icon to perfectly balance its visual weight against the default send arrow.

⚙️ Other Changes

  • Comprehensive Architecture Documentation: Adds a new ARCHITECTURE.md file that explains the deep SwiftUI Scroll Physics & Concurrency design decisions.
  • Concurrency Fixes: Eliminates 1-frame micro-delay layout bugs associated with Swift 6 Concurrency by utilizing a local optimisticUserMessage state to guarantee perfect keyboard-dismissal anchoring.

Full Changelog: v0.0.4...v0.1.0

v0.0.4 - Better backward compatibility for Xcode 16

11 Dec 19:48

Choose a tag to compare

What's Changed

Full Changelog: v0.0.3...v0.0.4

v0.0.3 - Attachment Previews and UI Refinements

18 Nov 16:48

Choose a tag to compare

🚀 New Features

  • Attachment Previews: A new attachment preview card is displayed in the MessageComposerView when a user selects a file to attach.
  • Simplified Attachment Handling: The Attachment protocol now conforms to View, simplifying the process of creating custom attachment previews.

💄 UI Improvements

  • Conditional Plus Button: The "+" button for attachments is now hidden if no attachment actions are registered, creating a cleaner UI.

⚙️ Other Changes

  • Dependency Management: Switched to relative paths for dependencies to improve project portability.
  • Improved Documentation: Updated the README.md to reflect the latest changes and ensure accuracy.

New Contributors

Full Changelog: v0.0.2...v0.0.3

v0.0.2 - Modernized, More Extensible, and Ready for the Future

13 Aug 12:37
8e964ec

Choose a tag to compare

This release marks a major milestone for ConversationKit, introducing a more flexible and extensible architecture, along with a host of new features and improvements.

🚀 New Features

  • Modernized Data Layer: We've refactored the Message model to a protocol-based approach. This allows you to use your own custom message types, providing greater flexibility and better integration with your existing data models.
  • Robust Error Handling: We've introduced a new error handling mechanism that allows you to attach errors to messages and display them in the UI. A new .onError(perform:) view modifier makes it easy to catch and present these errors.
  • Attachment Actions: You can now add custom actions to attachments, enabling you to build more interactive and engaging chat experiences.
  • Image Support: ConversationKit now supports sending and receiving images, making your conversations more expressive.
  • New Demo App: We've added a new demo app that showcases how to integrate ConversationKit with AI services like Firebase AI and Foundation Models.

💄 UI Improvements

  • iOS 18 UI Improvements: We've made a number of UI improvements to ensure that ConversationKit looks and feels great on the latest version of iOS.
  • "Add" Button Fix: We've fixed an issue where the "add" button was not sized correctly on iOS 26.

⚙️ Other Changes

  • Reduced Deployment Target: We've reduced the minimum deployment target to iOS/macCatalyst 17+, making it easier to integrate ConversationKit into your existing projects.
  • Code Cleanup: We've performed a major code cleanup, making the codebase easier to read and maintain.
  • Improved Documentation: We've added a comprehensive README that provides detailed information on how to use and customize ConversationKit.

New Contributors

Full Changelog: v0.0.1...v0.0.2

ConversationKit v0.0.1 - Initial Release

29 Jul 22:47
4a4ddff

Choose a tag to compare

🎉 Welcome to the first release of ConversationKit! This SwiftUI library provides an elegant and easy-to-use chat interface for iOS applications.

✨ Features

  • 💬 Ready-to-use chat interface with built-in message bubbles
  • 👤 Multi-participant support (user vs other)
  • 🖼️ Image message support with async loading
  • 📝 Markdown rendering for rich text messages
  • ⚡️ Async/await support for message handling
  • 🎨 Customizable message rendering with custom content closures
  • 📱 Modern iOS design with glass effects (iOS 17+)
  • 🔄 Real-time message streaming support
  • 📎 Attachment actions with customizable menu
  • �� Auto-scrolling to latest messages
  • ⌨️ Keyboard-aware input handling

🚀 Getting Started

Add ConversationKit to your project using Swift Package Manager:

dependencies: [
    .package(url: "https://github.com/peterfriese/ConversationKit", from: "0.0.1")
]

📋 Requirements

  • iOS 17.0+
  • Swift 5.10+
  • Xcode 15.0+

🧩 Core Components

  • Message: Basic conversation unit with text and image support
  • ConversationView: Main chat interface with built-in and custom rendering options
  • MessageComposerView: Input component with attachment support
  • MessageView: Individual message display with markdown support

📦 What's Included

  • Complete chat UI implementation
  • Markdown rendering support via Swift Markdown UI
  • Image message handling with async loading
  • Customizable attachment actions
  • Real-time streaming support
  • Comprehensive documentation and examples

📚 Documentation

Check out the README for detailed usage examples and integration guides.

🤝 Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.


License: Apache License, Version 2.0