Releases: peterfriese/ConversationKit
Releases · peterfriese/ConversationKit
v0.1.0 - Gemini-style "Sticky Top" Scrolling & Progressive Disclosure UX
🚀 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
TypingIndicatorif you temporarily add an AI message withcontent == 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.fillicon to perfectly balance its visual weight against the default send arrow.
⚙️ Other Changes
- Comprehensive Architecture Documentation: Adds a new
ARCHITECTURE.mdfile 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
optimisticUserMessagestate to guarantee perfect keyboard-dismissal anchoring.
Full Changelog: v0.0.4...v0.1.0
v0.0.4 - Better backward compatibility for Xcode 16
v0.0.3 - Attachment Previews and UI Refinements
🚀 New Features
- Attachment Previews: A new attachment preview card is displayed in the
MessageComposerViewwhen a user selects a file to attach. - Simplified Attachment Handling: The
Attachmentprotocol now conforms toView, 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.mdto 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
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
Messagemodel 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
- @andrewheard made their first contribution in #3
- @YoungHypo made their first contribution in #4
Full Changelog: v0.0.1...v0.0.2
ConversationKit v0.0.1 - Initial Release
🎉 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