Files
chainlit--chainlit/CHANGELOG.md
T
wehub-resource-sync b7f52be4c9
CI / Run CI (push) Has been cancelled
CI / check-backend (push) Has been cancelled
CI / check-frontend (push) Has been cancelled
CI / tests (push) Has been cancelled
CI / e2e-tests (push) Has been cancelled
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:48:47 +08:00

1860 lines
56 KiB
Markdown

# Changelog
All notable changes to Chainlit will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [2.11.1] - 2026-04-22
### Added
- Pass `chat_profile` to `set_starter_categories` callback so starters can vary by profile
### Fixed
- Guard `on_chat_start` against duplicate dispatch on WebSocket reconnect
- Check `langchain-core` version instead of `langchain` for callback compatibility
- Resolve base locale codes to regional translation files (e.g. `da``da-DK`)
### Changed
- Refactor dev scripts for streamlined local development
- Upgrade Prettier and Ruff and auto-format missed files
## [2.11.0] - 2026-04-07
### Added
- Add copilot sidebar mode with drag-to-resize and persisted display preferences
- Add `polars.DataFrame` support for `Dataframe` elements
- Replace the iframe PDF preview with an improved built-in PDF viewer
- Allow `Step` messages to use Lucide icons instead of the default avatar
- Make the stop icon and loading cursor customizable via CSS variables
- Add Portuguese (`pt-PT`) translations
- Make Azure AD OAuth scopes configurable via environment variables
- Add `ChatSettings.refresh()` so `on_settings_edit` can refresh widgets without committing session settings
### Fixed
- Sort thread history month categories by actual date and locale
- Clear pending attachments when switching chat profiles
- Handle Slack workflow and bot `app_mention` events correctly
- Show error toasts when Streamable HTTP MCP connections fail
- Harden MCP cleanup to avoid cross-task cancel-scope errors during connect, disconnect, and reconnect
- Respect disabled state for date picker, multiselect, tags, and radio chat settings widgets
- Restore chat settings values and schema correctly after live edits, reset, or cancel
- Send slash-command input on Enter when no registered command matches
- Preserve live favorite message state and fix accordion closing behavior
- Respect explicit Plotly figure heights in rendered elements
- Make `send_toast()` asynchronous and improve LangChain 1.x cache compatibility
- Prevent thread metadata `NULL` violations while preserving metadata merges in built-in data layers
- Treat an empty `custom_fonts` array as removing default fonts
- Use the correct logging format specifier during OAuth state validation
### Changed
- Widen dependency compatibility for OpenAI 2.x, LangChain 1.x, Transformers 5.x, Plotly 6.x, and related packages
- Upgrade repo linting to ESLint 10 and make `pdfjs-dist` an explicit frontend dependency
## [2.10.1] - 2026-03-27
### Fixed
- Security vulnerability in Chainlit: validate WebSocket session restore against the authenticated user
### Changed
- Move npm library publishing to OIDC Trusted Publishing
## [2.10.0] - 2026-03-05
### Added
- Add starter categories for grouped starters
- Always show the favorite messages button with an empty state
- Add option to disable rendering markdown in user messages
- Allow easy deletion of favorites
- Make state cookie lifetime configurable via env var
- Add Arabic translation
- Add Danish translation
- Add settings change listener
- Add image preview
- Add selected option for command pre-selection
- Add `auto_collapse` parameter to `Step`
- Add `/health` endpoint for container orchestration
- Add `hidden` option for `default_sidebar_state`
- Make avatar size configurable via `config.toml`
### Fixed
- Reorder chat history sidebar after messages in existing chats
- Use login error detail for credential failures
- Convert UUID fields to strings in feedback extraction
- Preserve thread metadata when updated without metadata
- Reset audio UI when microphone permission is denied
- Fix sidebar inset overflow causing horizontal scroll
- Prevent empty strings from overwriting step content on upsert
- Use correct URL scheme when SSL is configured
## [2.9.6] - 2026-01-20
### Added
- Allow skip new chat creation
- Add data picker input widget
- Toggle chat settings in sidebar instead of composer
### Fixed
- Fix: Starters now correctly use the selected/default mode if configured
## [2.9.5] - 2026-01-08
### Added
- Add favorite messages (prompt templates)
### Fixed
- Fix: Starters now correctly use the selected/default mode if configured
## [2.9.4] - 2025-12-24
### Added
- Add an icon for shared thread
- New option to allow disabling auto scroll of assistant messages
- Add modes: you may allow users to select an LLM model, a mode (for example, planning), allow to enable reasoning etc.
- Breaking change: you need to run `ALTER TABLE steps ADD COLUMN IF NOT EXISTS modes JSONB;` for migration
### Fixed
- Fix tiny avatar for long messages
- Security vulnerability in Chainlit: added missed sanitization to custom elements update endpoint
### Changed
- Bumped watchfiles version
## [2.9.3] - 2025-12-04
### Added
- Add tests for oauth providers and messages
- Merge metadata in chainlit data layer
- Add native video support in markdown rendering
- Optimize chat message rendering
- Add language configuration option to config.toml
- Upgrade langchain imports for v1 compatibility
- Improve icon name formatting issues
### Fixed
- Fixed page blinking issue with header_auth
- Set environ when restoring websocket session
- Move hello.py to avoid import issues
- Fix issue showing thread sharing when disabled
- Disable Chainlit from setting logging globally
## [2.9.2] - 2025-11-22
### Added
- Add tests for socket, chat context, cache, translations & oauth providers
### Fixed
- Fix copilot breaking change introduced in 2.8.5
## [2.9.1] - 2025-11-20
### Added
- Add support for tabs in chat settings
- Support markdown in watermark
- Add italian translation to translations folder
- Add query param prefill for chat
- Add tests for utils, markdown, sidebar, chat settings, mcp, input widget, langchain, elements, steps, and actions
## [2.9.0] - 2025-11-06
### Added
- Add better support for Multi-Agent implementations
- Nested steps are now step.input -> child step -> step.output
- Improved formatting and styling of Tasklist
## [2.8.5] - 2025-11-07
### Added
- Add display_name to ChatProfile
- Add slack reaction event callback
- Add raw response from OAuth providers
### Fixed
- Security vulnerability in Chainlint: added missed ACL check for session initialization
### Changed
- Remove FastAPI version restrictions
## [2.8.4] - 2025-10-29
### Added
- Add support for GitHub Enterprise OAuth provider
- Explicit disable on input widgets
### Fixed
- Tasklist tasks are now properly reconnected to their steps/messages
- ci: fix pnpm publish checks
- fix: missing / in url with base path when connecting Streamable HTTP MCP
- fix - persist custom_elements to data layer without cloud storage
- fix: propagate IME composition events in AutoResizeTextarea
- fix: confirm when enter
- Fix(translation): correct French translation of chat watermark
- fix(ui): add fallback logo if custom logo is missing
## [2.8.3] - 2025-10-06
### Added
- Support for the `target` attribute in header links, which can be configured through the configuration options
### Changed
- `@chainlit/react-client` automatic publishing
## [2.8.2] - 2025-10-01
### Changed
- Remove autofocus in mobile message composer
- Improve error handling in sqlalchemy data layer `get_read_url()`
### Fixed
- Fix voice hotkey (P) triggering when typing in chat input
- Properly finalize data layers
- Fix `on_chat_start` not always firing
## [2.8.1] - 2025-09-24
### Added
- Add German and Korean translations
- Add support for custom_meta_url in config.toml
### Changed
- `cl.on_thread_share_view` will allow shared thread viewing if it returns `True` to enable custom/admin viewing.
### Fixed
- Removed redundant message sending in Slack when images are present.
- Generate signed url when loading elements using SQLAlchemy data layer.
## [2.8.0] - 2025-09-12
### Added
- Add ability to share threads. See documentation for how to enable it.
- https://docs.chainlit.io/api-reference/lifecycle-hooks/on-shared-thread-view
- Add new chat settings: multi-select, radio-group, and checkbox
- Add optional language parameter to set_starters
- Add neutral Spanish translation
- Allow sending commands from custom elements
### Changed
- Reordered message composer elements
### Fixed
- Default to plaintext code blocks for unsupported languages like CSV
- Sort threads by updated_at field
- Replace hardcoded strings with translation keys
- GCP storage provider dependency is now optional
- CI/CD fixes
- Fixed issues with hot-reloading in dev mode (`-w` flag)
- Take overridden config into account in audio handlers
## [2.7.2] - 2025-08-26
### Added
- Added LiteralAI data layer deprecation warning
- Added context to `@cl.on_feedback` callback
- Added Traditional Chinese (Taiwan) translations
- Added configurable user_env persistence to database
- New `persist_user_env` and `mask_user_env` field in `config.toml`
- Added new command translations to all languages
- Added CODEOWNERS
### Fixed
- Improved dynamic config overrides for chat profiles
- Import GCSStorageClient only when needed to avoid requiring optional dependencies
- Updated CONTRIBUTING.md for `uv` usage
## [2.7.1.1] - 2025-08-21
- Fix publishing to include frontend and copilot folders
## [2.7.1] - 2025-08-20
- Fix publishing to work with uv
## [2.7.0] - 2025-08-20
### Added
- New ChatGPT-style command selection and improve message input handling
- Added the ability to override certain config.toml settings for Chat Profiles, so some profiles can have MCP and some can't for example. [Documentation Updated](https://docs.chainlit.io/api-reference/chat-profiles#dynamic-configuration).
- You must now explicity enable audio and MCP as these are no longer inferred by the presence of `on_audio_start` or `on_mcp_connect` callbacks
- Delete your `config.toml`, run `chainlit init`, and update your settings
- Added copilot setup instructions for GitHub Copilot SWE Agent
- Added Slack socket mode support
- AskFileButton can now upload file with proper checking and it's own limits
- Added content-disposition metadata to azure blob uploads to persist download file name
- Migrated from poetry to uv
### Fixed
- Changed thread sorting to use updated time instead of creation time
- Add missing headers when connecting Streamable HTTP MCP
- Remove undocumented `CHAINLIT_CUSTOM_AUTH` environment variable used in Copilot
## [2.6.9] - 2025-08-14
### Added
- Add GitHub Copilot instructions for automated PRs
- (Slack) Add threadId for user feedback
- (Copilot) Add new optional opened property has been added to the widget config
### Fixed
- Fix blinking cursor indicator
- (Copilot) Rename copilot inner div id `chainlit-copilot` to `chainlit-copilot-chat` due to naming conflict with the outer div
- Disable gzip for websocket-relaed http endpoint (Safari compatibility)
- Prevent constant refresh on the login screen when using custom authenication
- Fix MCP type hints
## [2.6.8] - 2025-08-08
### Other
- Reverted PR with newline preservation in messages due to incorrect rendering in child components like lists
## [2.6.7] - 2025-08-07
### Fixed
- Formatting when pasting HTML code and newlines in received messages
## [2.6.6] - 2025-08-05
### Added
- Add support for emoji reaction on message received in Slack
- Add Greek translation
- Copy both plain text and rich text to clipboard, if available (rich text pasting to editors like Word)
- Rename `CHAINLIT_COOKIE_PATH` to `CHAINLIT_AUTH_COOKIE_PATH` and now espect CHAINLIT_ROOT_PATH
- Add language parameter to Copilot widget configuration
### Fixed
- Prevent HTML code in user message to be rendered as HTML instead of displaying as code
- Properly parse `user_env` when `config.project.user_env` is empty
## [2.6.5] - 2025-08-02
### Fixed
- Properly escape HTML on paste
- Enable gzip compression for frontend
- Address security vulnerabilities in dependencies by upgrading them to the closest safe versions
- CI e2e tests and pnpm cache issues
## [2.6.4] - 2025-08-01
### Added
- Add streamable HTTP MCP support
- Improve e2e test stability and performance
- Add configuration for expanded copilot mode
- Add French translation
### Fixed
- Fix inputs/outputs for langchain callbacks
- Fix blinking indicator for in-progress steps
- Avoid unnecessary logo fetching when supplied in config.toml
### Other
- Bump dependencies
## [2.6.3] - 2025-07-25
### Added
- Ability to send empty commands
- Wider element view in copilot and improved styling
- Support signed urls for elements using dynamoDB persistence
- Support additional connection arguments in SQLAlchemy data layer
- Added `CHAINLIT_COOKIE_PATH` environment variable to set the cookie path
### Fixed
- Message inputs formatting
- Language pattern to allow `tzm-Latn-DZ`
- Properly encode parentheses in markdown links
- Fix chainlit data layer metadata upserts
- Improve database connection handling
- Fixed cookie path
- Improve lanchain callbacks
### Other
- Improve robustness of E2E tests
- Removed watermark "Built with Chainlit"
## [2.6.2] - 2025-07-16
Technical release due to missed `frontend` and `copilot` folders in previous one.
## [2.6.1] - 2025-07-15
### Added
- New `on_feedback` callback
- Relaxed restriction on number of starters (now more than 4 can be displayed)
### Fixed
- Command persistence when `"button": True` is missing from command definition
- `openai` and `mistralai` sub-modules fail due to incorrect `timestamp_utc` import
- Temporarily reverted fix caused the following issues with Chainlit data layer:
- `null value in column "metadata" of relation "Thread"`
- `syntax error at or near ";"`
- Google Cloud Storage private bucket support in Chainlit data layer
- Portals (popups, dialogs, etc.) now render correctly inside Copilot's shadow DOM
### Other
- Removed telemetry
- Updated versions for Node.js, Poetry, and pnpm; added Corepack support
## [2.6.0] - 2025-07-01
### Added
- Add commands to starters
- Collapse command buttons to icons for small screens
- Add timegated custom elements
- Added ADC support for google cloud storage adapter
- Added scope as env variable (`OAUTH_COGNITO_SCOPE`) to Cognito auth provider
- Add MarkdownAlert Style Switcher. Control via `alert_style` in `config.toml`.
- Allow custom s3 endpoint for the official data layer
- Added container prop to dialog portal in Copilot shadow DOM
- Bump dependencies
- Add python 3.13 support
### Fixed
- Fix chat input double-spacing issue
- Resolve python deprecation warning for utc_now() and logger.warn
- Fixed an issue where the portal for the ChatProfiles selector was being rendered outside the Copilot shadow DOM
- Add mime type to element emitter
- Handle float/Decimal conversion for DynamoDB persistence
- Fix cancel button in Chat settings
- Only update thread metadata when not empty
### Breaking
- **LiteralAI** is being sunset and will be removed in one of the next releases. Please migrate to the official data layer instead.
- Telemetry is now opt-in by default and will be removed in the next release.
## [2.5.5] - 2025-04-14
### Added
- Avatars now support `.` in their name (will be replaced with `_`).
- Typed session accessors for user session
- Allow set attributes for the tags of the custom_js or custom_css
- Hovering a past chat in the sidebar will display the full title of the chat in a tooltip
- The `X-Chainlit-Session-id` header is now automatically set to facilitate sticky sessions with websockets
- `cl.ErrorMessage` now have a different avatar
- The copy button is now only displayed on the final message of a run, like feedback buttons
- CopilotFunction is now usable in custom JS
- Header link now have an optional `display_name` to display text next to the icon
- The default .env file loaded by chainlit is now configurable with `CHAINLIT_ENV_FILE`
### Changed
- **[breaking]**: `http_referer`, `http_cookie` and `languages` are no longer directly available in the session object. Instead, `environ` is available containing all of those plus other HTTP headers
- The scroll to the bottom animation is now smooth
## [2.4.400] - 2025-03-29
### Added
- `@cl.on_app_startup` and `@cl.on_app_shutdown`
- Configuration option for chat history default open state
- Configuration option for login page background image and filter
- Most commonly customized ui elements now have specific IDs
### Fixed
- App should no longer flicker on load
- Attachments icons for microsoft files should now correctly display
- Pasting should no longer be duplicated
## [2.4.302] - 2025-03-26
### Added
- Add thinking token support to langchain callback handler
### Fixed
- Pasting issues in the chat input
- Rename nl-NL.json to nl.json
## [2.4.301] - 2025-03-24
### Fixed
- Mcp button should not be displayed if `@on_mcp_connect` is not defined
## [2.4.3] - 2025-03-23
### Added
- Canvas mode for the element side bar if title == `canvas`
- Allow list for MCP stdio commands
- `key` parameter to `ElementSidebar.set_elements` method
### Fixed
- Literal AI should now correctly store custom elements props
- Element should correctly load from azure storage
- Plotly elements should now take full width
## [2.4.2] - 2025-03-19
### Added
- Hide commands button if all commands are specified as button.
### Fixed
- Chat profiles tooltip should no longer freeze is hover rapidly
## [2.4.1] - 2025-03-13
### Added
- The user message auto scroll behavior is now a feature `config.features.user_message_autoscroll`
- Stdio MCP commands now support environment variables
### Fixed
- Submounting a Chainlit app to a FastAPI app with a root path should now work
## [2.4.0] - 2025-03-11
### Changed
- Chainlit now requires python `>=3.10`
### Added
- MCP support through `@cl.on_mcp_connect` and `@cl.on_mcp_disconnect`
### Fixed
- Pasting text/images into Chainlit Copilot should now work
- OAuth redirection should work when submounting Chainlit with root path `/`
- Successive AskUser messages should no longer collide
### Removed
- Outdated Haystack integration
## [2.3.0] - 2025-03-09
### Added
- New user messages are now placed/scrolled to the top of the chat to enhance readability
- Commands have a new optional boolean field `button` to turn them into buttons
- Custom elements have access to a new API `sendUserMessage`
### Fixed
- Chainlit app using a custom root path should now work correctly when running in docker containers
- Chat history time groups should now be sorted properly
## [2.2.1] - 2025-02-14
### Added
- `default_open` parameter to the step decorator/class
### Fixed
- Input should not replace <,>,&
- Starters should be disabled if no ws connection
- Prevent orphaned thread record when deleting active conversation
## [2.2.0] - 2025-02-08
### Added
- You can now add custom buttons in the header
### Fixed
- Step open/close is now animated
- prevent unstyled flash when streaming code blocks
- Docking/undocking scroll while streaming show now work better
## [2.1.2] - 2025-02-05
### Fixed
- The default loader should now be displayed if the chat is running and no response is yet sent
- Pasting HTML in the chat input show now work
- React warnings and accessibility issues
- Command filtering now works with `includes` instead of `startWith`
- The submit button should be disabled in the chat input is empty
## [2.1.1] - 2025-02-03
### Fixed
- Reintroduce including URL location after UI refactor
- Ensure SAS token start time is set to UTC
- Prevent showing 0's on resumed thread if AskAction/File was used
- Remove 22px element ref height
- Update Microsoft OAuth offline_access scope to be fully qualified with the prefix
## [2.1.0] - 2025-01-30
### Added
- You can now send toasts with `cl.context.emitter.send_toast`
- Markdown now supports alerts
- Theme options are now translatable
- Copilot can now load custom css
### Fixed
- Mounting Chainlit as a sub app should no longer break the parent's app endpoints
- Pasting text in the chat input should now remove extra formatting and preserve new lines
## [2.0.603] - 2025-01-28
### Added
- Data layer initialization to the telemetry
### Fixed
- Gap between the word `Used` and tool name in step name
## [2.0.602] - 2025-01-27
### Fixed
- Chat input should now auto focus
- When unfolding a step, the `Output` title should only show if there is an input to display
## [2.0.601] - 2025-01-25
### Fixed
- Element sidebar should take full height
## [2.0.6] - 2025-01-24
### Added
- The element sidebar is now controllable from the python code
### Fixed
- The auth cookie no longer has a maximal size
- Pasting text in the chat input should now work
- Long text in AskAction buttons are now gracefully displayed
- Server connection error translation path
## [2.0.5] - 2025-01-21
### Added
- Chat GPT like commands
- Translation options. The translation schema has been simplified
### Fixed
- Warnings around file upload mime types
- `uvicorn` and `packaging` version requirement have been relaxed
## [2.0.4] - 2025-01-17
### Added
- Overhaul element reference link styling
- Japanese translations
- Improved Chinese translations
- Translations for feedback buttons
### Fixed
- Cookie max age should now correctly use the config `user_session_timeout` field
- Thread grouping in the chat history should now correctly handle timezones
- File from `AskFileMessage` should now share ID with the data layer
- Data layer boolean casting issues
- Chat settings modal scrolling issue
## [2.0.3] - 2025-01-14
### Added
- `CustomElement.update()` to update a custom element props server side
- Translation for the copy button
### Fixed
- The official data layer should not overwrite elements anymore
- A bug where resuming a thread would not load the thread
- Prevent authentication before the app is fully loaded
- Installing Chainlit from github should work again
- `tool` steps should count as a thread start
## [2.0.2] - 2025-01-10
### Added
- `http_cookie` is now available in the user session and websocket session
### Fixed
- Chat profile description on the welcome screen now supports custom html and latex
- Thread history batch size has been increased to 35 to ensure scroll on a taller screens
- Chat settings modal should now scroll if too tall
- Errors in thread resume (like thread not found) now properly redirects to the the home page
- Elements like Dataframe, Plotly or text should now load correctly from cloud storages
- AskFileMessage is now usable even if spontaneous uploads are disabled
- Remove element objects from cloud storage on thread removal (Official & SQLAlchemy data layers)
- Fix custom element `props` storage for SQL Alchemy data layer
## [2.0.1] - 2025-01-09
### Added
- `window.toggleChainlitCopilot()` to toggle the copilot
### Fixed
- Chat profiles icon and description should now be displayed on the welcome screen
- Action should be able to trigger the first interaction
- Raw code blocks should now be displayed correctly
- TextInput for chat settings should now work
- Upload attachement button should not be displayed when upload is disabled
- Removed unused numpy dependency
## [2.0.0] - 2025-01-06
The Chainlit UI (including the copilot) has been completely re-written with Shadcn/Tailwind. This brings several advantages:
1. The codebase is simpler and more contribution friendly.
2. It enabled the new custom element feature.
3. The theme customisation is more powerful.
### Added
- Custom Elements (code your own elements)
- `Cmd+k` thread search
- Thread rename
- Official PostGres open source data layer
- New `@data_layer` decorator for configuring custom data layers declaratively
### Changed
- Authentication is now based on cookies. Cross Origins are disallowed unless added in `allow_origins` in the `config.toml` file
- No longer need to click on `resume` to resume a thread
- **[breaking]**: Theme customisation is now handled in `public/theme.json` instead of `config.toml`.
- **[breaking]**: Changed fields on the `Action` class:
- The `value` field has replaced with `payload` which accepts a Python dict
- The `description` field has been renamed `tooltip`
- The field `icon` has been added
- The `collapsed` field has been removed.
- **[breaking]**: Completely revamped audio implementation (#1401, #1410):
- Replaced `AudioChunk` with `InputAudioChunk` and `OutputAudioChunk`
- Changed default audio sampling rate from 44100 to 24000
- Removed several audio configuration options (`min_decibels`, `initial_silence_timeout`, `silence_timeout`, `chunk_duration`, `max_duration`)
### Fixed
- Autoscaling of Chainlit app behind a load balancer should now work. Don't forget to enable sticky sessions
## [2.1.dev0] - 2024-11-14
Pre-release: developer preview.
### Added
- New `@data_layer` decorator for configuring custom data layers declaratively
- Unit tests for `get_data_layer()` and `@data_layer` functionality
### Changed
- Data layer configuration system now prioritizes `@data_layer` decorator over environment variables
- Data layer initialization is now more explicit and testable through the decorator pattern
- Updated example code in `/cypress/e2e/custom_data_layer` and `/cypress/e2e/data_layer` to use the new decorator
### Developer Experience
- Improved test infrastructure with new fixtures for data layer mocking
- Added comprehensive tests for data layer configuration scenarios
## [1.3.2] - 2024-11-08
### Security Advisory
**IMPORTANT**:
- This release drops support for FastAPI versions before 0.115.3 and Starlette versions before 0.41.2 due to a severe security vulnerability (CVE-2024-47874). We strongly encourage all downstream dependencies to upgrade as well.
- This release still contains a known security vulnerability in the element feature that could allow unauthorized file access. We strongly recommend against using elements in production environments until a comprehensive fix is implemented in an upcoming release.
### Security
- **[breaking]** Updated dependencies to address critical issues (#1493):
- Upgraded fastapi to 0.115.3 to address CVE-2024-47874 in Starlette
- Upgraded starlette to 0.41.2 (required for security fix)
- Upgraded werkzeug to 3.0.6
Note: This is a breaking change as older FastAPI versions are no longer supported.
To prioritize security, we opted to break with semver on this particular occasion.
### Fixed
- Resolved incorrect message ordering in UI (#1501)
## [2.0rc0] - 2024-11-08
### Security Advisory
**IMPORTANT**:
- The element feature currently contains a known security vulnerability that could allow unauthorized file access. We strongly recommend against using elements in production environments until a comprehensive fix is implemented in an upcoming release.
### Changed
- **[breaking]**: Completely revamped audio implementation (#1401, #1410):
- Replaced `AudioChunk` with `InputAudioChunk` and `OutputAudioChunk`
- Changed default audio sampling rate from 44100 to 24000
- Removed several audio configuration options (`min_decibels`, `initial_silence_timeout`, `silence_timeout`, `chunk_duration`, `max_duration`)
- Removed `RecordScreen` component
- Factored storage clients into separate modules (#1363)
### Added
- Realtime audio streaming and processing (#1401, #1406, #1410):
- New `AudioPresence` component for visual representation
- Implemented `WavRecorder` and `WavStreamPlayer` classes
- Introduced new `on_audio_start` callback
- Added audio interruption functionality
- New audio connection signaling with `on` and `off` states
- Interactive DataFrame display with auto-fit content using MUI Data Grid (#1373, #1467)
- Optional websocket connection in react-client (#1379)
- Enhanced image interaction with popup view and download option (#1402)
- Current URL included in message payload (#1403)
- Allow empty chat input when submitting attachments (#1261)
### Fixes
- Various backend fixes and cleanup (#1432):
- Use importlib.util.find_spec to check if a package is installed
- Use `raise... from` to wrap exceptions
- Fix error message in Discord integration
- Several minor fixups/cleanup
### Development
- Implemented ruff for linting and formatting (#1495)
- Added mypy daemon for faster type-checking (#1495)
- Added GitHub Actions linting (#1445)
- Enabled direct installation from GitHub (#1423)
- Various build script improvements (#1462)
## [1.3.1] - 2024-10-25
### Security Advisory
- **IMPORTANT**: This release temporarily reverts the file access security improvements from 1.3.0 to restore element functionality. The element feature currently has a known security vulnerability that could allow unauthorized access to files. We strongly recommend against using elements in production environments until the next release.
- A comprehensive security fix will be implemented in an upcoming release.
### Changed
- Reverted authentication requirements for file access endpoints to restore element functionality (#1474)
### Development
- Work in progress on implementing HTTP-only cookie authentication for proper security (#1472)
## [1.3.0] - 2024-10-22
### Security
- Fixed critical endpoint security vulnerabilities (#1441)
- Enhanced authentication for file-related endpoints (#1431)
- Upgraded frontend and backend dependencies to address security issues (#1431)
### Added
- SQLite support in SQLAlchemy integration (#1319)
- Support for IETF BCP 47 language tags, enabling localized languages like es-419 (#1399)
- Environment variables `OAUTH_<PROVIDER>_PROMPT` and `OAUTH_PROMPT` to
override oauth prompt parameter. Enabling users to explicitly enable login/consent prompts for oauth, e.g. `OAUTH_PROMPT=consent` to prevent automatic re-login. (#1362, #1456).
- Added `get_element()` method to SQLAlchemyDataLayer (#1346)
### Changed
- Bumped LiteralAI dependency to version 0.0.625 (#1376)
- Optimized LiteralDataLayer for improved performance and consistency (#1376)
- Refactored context handling in SQLAlchemy data layer (#1319)
- Updated package metadata with correct authors, license, and documentation links (#1413)
- Enhanced GitHub Actions workflow with restricted permissions (#1349)
### Fixed
- Resolved dialog boxes extending beyond window bounds (#1446)
- Fixed tasklist functionality when Chainlit is submounted (#1433)
- Corrected handling of `display_name` in PersistentUser during authentication (#1425)
- Fixed SQLAlchemy identifier quoting (#1395)
- Improved spaces handling in avatar filenames (#1418)
### Development
- Implemented extensive test coverage for LiteralDataLayer and SQLAlchemyDataLayer
- Added comprehensive unit tests for file-related endpoints
- Enhanced code organization and import structure
- Improved Python code style and linting (#1353)
- Resolved various small text and documentation issues (#1347, #1348)
## [1.2.0] - 2024-09-16
### Security
- Fixed critical vulnerabilities allowing arbitrary file read access (#1326)
- Improved path traversal protection in various endpoints (#1326)
### Added
- Hebrew translation JSON (#1322)
- Translation files for Indian languages (#1321)
- Support for displaying function calls as tools in Chain of Thought for LlamaIndexCallbackHandler (#1285)
- Improved feedback UI with refined type handling (#1325)
### Changed
- Upgraded cryptography from 43.0.0 to 43.0.1 in backend dependencies (#1298)
- Improved GitHub Actions workflow (#1301)
- Enhanced data layer cleanup for better performance (#1288)
- Factored out callbacks with extensive test coverage (#1292)
- Adopted strict adherence to Semantic Versioning (SemVer)
### Fixed
- Websocket connection issues when submounting Chainlit (#1337)
- Show_input functionality on chat resume for SQLAlchemy (#1221)
- Negative feedback class incorrectness (#1332)
- Interaction issues with Chat Profile Description Popover (#1276)
- Centered steps within assistant messages (#1324)
- Minor spelling errors (#1341)
### Development
- Added documentation for release engineering process (#1293)
- Implemented testing for FastAPI version matrix (#1306)
- Removed wait statements from E2E tests for improved performance (#1270)
- Bumped dataclasses to latest version (#1291)
- Ensured environment loading before other imports (#1328)
## [1.1.404] - 2024-09-04
### Security
- **[breaking]**: Listen to 127.0.0.1 (localhost) instead on 0.0.0.0 (public) (#861).
- **[breaking]**: Dropped support for Python 3.8, solving dependency resolution, addressing vulnerable dependencies (#1192, #1236, #1250).
### Fixed
- Frontend connection resuming after connection loss (#828).
- Gracefully handle HTTP errors in data layers (#1232).
- AttributeError: 'ChatCompletionChunk' object has no attribute 'get' in llama_index (#1229).
- `edit_message` in correct place in default config, allowing users to edit messages (#1218).
### Added
- `CHAINLIT_APP_ROOT` environment variable to modify `APP_ROOT`, enabling the ability to set the location of `config.toml` and other setting files (#1259).
- Poetry lockfile in GIT repository for reproducible builds (#1191).
- pytest-based testing infrastructure, first unit tests of backend and testing on all supported Python versions (#1245 and #1271).
- Black and isort added to dev dependencies group (#1217).
## [1.1.403rc0] - 2024-08-13
### Fixed
- Langchain Callback handler IndexError
- Attempt to fix websocket issues
## [1.1.402] - 2024-08-07
### Added
- The `User` class now has a `display_name` field. It will not be persisted by the data layer.
- The logout button will now reload the page (needed for custom auth providers)
## [1.1.401] - 2024-08-02
### Changed
- Directly log step input args by name instead of wrapping them in "args" for readability.
### Fixed
- Langchain Callback handler ValueError('not enough values to unpack (expected 2, got 0)')
## [1.1.400] - 2024-07-29
### Changed
- hide_cot becomes cot and has three possible values: hidden, tool_call, full
- User feedback are now scoring an entire run instead of a specific message
- Slack/Teams/Discord DM threads are now split by day
- Slack DM now also use threads
- Avatars are always displayed at the root level of the conversation
### Removed
- disable_feedback has been removed
- root_message has been removed
## [1.1.306] - 2024-07-03
### Added
- Messages are now editable. You can disable this feature with `config.features.edit_message = false`
- `cl.chat_context` to help keeping track of the messages of the current thread
- You can now enable debug_mode when mounting Chainlit as a sub app by setting the `CHAINLIT_DEBUG` to `true`.
### Fixed
- Message are now collapsible if too long
- Only first level tool calls are displayed
- OAuth redirection when mounting Chainlit on a FastAPI app should now work
- The Langchain callback handler should better capture chain runs
- The Llama Index callback handler should now work with other decorators
## [1.1.305] - 2024-06-26
### Added
- Mistral AI instrumentation
## [1.1.304] - 2024-06-21
### Fixed
- OAuth final redirection should account for root path if provided
## [1.1.303] - 2024-06-20
### Fixed
- OAuth URL redirection should be correctly formed when using CHAINLIT_URL + submounted chainlit app
## [1.1.302] - 2024-06-16
### Added
- Width and height option for the copilot bubble
### Fixed
- Chat profile icon in copilot should load
- Theme should work with Copilot
### Removed
- Running toast when an action is running
## [1.1.301] - 2024-06-14
### Fixed
- Azure AD oauth get_user_info not implemented error
## [1.1.300] - 2024-06-13
### Added
- `@cl.set_starters` and `cl.Starter` to suggest conversation starters to the user
- Teams integration
- Expand copilot button
- Debug mode when starting with `-d`. Only available if the data layer supports it. This replaces the Prompt Playground.
- `default` theme config in `config.toml`
- If only one OAuth provider is set, automatically redirect the user to it
- Input streaming for tool calls
### Changed
- **[BREAKING]** Custom endpoints have been reworked. You should now mount your Chainlit app as a FastAPI subapp.
- **[BREAKING]** Avatars have been reworked. `cl.Avatar` has been removed, instead place your avatars by name in `/public/avatars/*`
- **[BREAKING]** The `running`, `took_one` and `took_other` translations have been replaced by `used`.
- **[BREAKING]** `root` attribute of `cl.Step` has been removed. Use `cl.Message` to send root level messages.
- Chain of Thought has been reworked. Only steps of type `tool` will be displayed if `hide_cot` is false
- The `show_readme_as_default` config has been removed
- No longer collapse root level messages
- The blue alert "Continuing chat" has been removed.
### Fix
- The Chat Profile description should now disappear when not hovered.
- Error handling of steps has been improved
- No longer stream the first token twice
- Copilot should now work as expected even if the user is closing/reopening it
- Copilot CSS should no longer leak/be impacted by the host website CSS
- Fix various `cl.Context` errors
- Reworked message padding and spacing
- Chat profile should now support non-ASCII characters (like chinese)
## [1.1.202] - 2024-05-22
### Added
- Support for video players like youtube or vimeo
### Fixed
- Fix audio capture on windows browsers
## [1.1.201] - 2024-05-21
### Fixed
- Intermediary steps button placement
## [1.1.200] - 2024-05-21
### Changed
- User message UI has been updated
- Loading indicator has been improved and visually updated
- Icons have been updated
- Dark theme is now the default
### Fixed
- Scroll issues on mobile browsers
- Github button now showing
## [1.1.101] - 2024-05-14
### Added
- The discord bot now shows "typing" while responding
### Fixed
- Discord and Slack bots should no longer fail to respond if the data layer fails
## [1.1.0] - 2024-05-13
### Added
- You can know serve your Chainlit app as a Slack bot
- You can know serve your Chainlit app as a Discord bot
- `cl.on_audio_chunk` decorator to process incoming the user incoming audio stream
- `cl.on_audio_end` decorator to react to the end of the user audio stream
- The `cl.Audio` element now has an `auto_play` property
- `layout` theme config, wide or default
- `http_referer` is now available in `cl.user_session`
### Changed
- The UI has been revamped, especially the navigation
- The arrow up button has been removed from the input bar, however pressing the arrow up key still opens the last inputs menu
- The user session will no longer be persisted as metadata if > 1mb
- **[breaking]** the `send()` method on `cl.Message` now returns the message instead of the message id
- **[breaking]** The `multi_modal` feature has been renamed `spontaneous_file_upload` in the config
- Element display property now defaults to `inline` instead of `side`
- The SQL Alchemy data layer logging has been improved
### Fixed
- Fixed a bug disconnecting the user when loading the chat history
- Elements based on an URL should now have a mime type
- Stopping a task should now work better (using asyncio task.cancel)
## [1.0.506] - 2024-04-30
### Added
- add support for multiline option in TextInput chat settings field - @kevinwmerritt
### Changed
- disable gzip middleware to prevent a compression issue on safari
### Fixed
- pasting from microsoft products generates text instead of an image
- do not prevent thread history revalidation - @kevinwmerritt
- display the label instead of the value for menu item - @kevinwmerritt
### Added
## [1.0.505] - 2024-04-23
### Added
- The user's browser language configuration is available in `cl.user_session.get("languages")`
- Allow html in text elements - @jdb78
- Allow for setting a ChatProfile default - @kevinwmerritt
### Changed
- The thread history refreshes right after a new thread is created.
- The thread auto-tagging feature is now opt-in using `auto_tag_thread` in the config.toml file
### Fixed
- Fixed incorrect step ancestor in the OpenAI instrumentation
- Enabled having a `storage_provider` set to `None` in SQLAlchemyDataLayer - @mohamedalani
- Correctly serialize `generation` in SQLAlchemyDataLayer - @mohamedalani
## [1.0.504] - 2024-04-16
### Changed
- Chainlit apps should function correctly even if the data layer is down
## [1.0.503] - 2024-04-15
### Added
- Enable persisting threads using a Custom Data Layer (through SQLAlchemy) - @hayescode
### Changed
- React-client: Expose `sessionId` in `useChatSession`
- Add chat profile as thread tag metadata
### Fixed
- Add quotes around the chainlit create-secret CLI output to avoid any issues with special characters
## [1.0.502] - 2024-04-08
### Added
- Actions now trigger conversation persistence
## [1.0.501] - 2024-04-08
### Added
- Messages and steps now accept tags and metadata (useful for the data layer)
### Changed
- The LLama Index callback handler should now show retrieved chunks in the intermadiary steps
- Renamed the Literal environment variable to `LITERAL_API_URL` (it used to be `LITERAL_SERVER`)
### Fixed
- Starting a new conversation should close the element side bar
- Resolved security issues by upgrading starlette dependency
## [1.0.500] - 2024-04-02
### Added
- Added a new command `chainlit lint-translations` to check that translations file are OK
- Added new sections to the translations, like signin page
- chainlit.md now supports translations based on the browser's language. Like chainlit_pt-BR.md
- A health check endpoint is now available through a HEAD http call at root
- You can now specify a custom frontend build path
### Fixed
- Translated will no longer flash at app load
- Llama Index callback handler has been updated
- File watcher should now properly refresh the app when the code changes
- Markdown titles should now have the correct line height
### Changed
- `multi_modal` is now under feature in the config.toml and has more granularity
- Feedback no longer has a -1 value. Instead a delete_feedback method has been added to the data layer
- ThreadDict no longer has the full User object. Instead it has user_id and user_identifier fields
## [1.0.400] - 2024-03-06
### Added
- OpenAI integration
### Fixed
- Langchain final answer streaming should work again
- Elements with public URLs should be correctly persisted by the data layer
### Changed
- Enforce UTC DateTimes
## [1.0.300] - 2024-02-19
### Added
- Custom js script injection
- First token and token throughput per second metrics
### Changed
- The `ChatGeneration` and `CompletionGeneration` has been reworked to better match the OpenAI semantics
## [1.0.200] - 2024-01-22
### Added
- Chainlit Copilot
- Translations
- Custom font
### Fixed
- Tasklist flickering
## [1.0.101] - 2024-01-12
### Fixed
- Llama index callback handler should now correctly nest the intermediary steps
- Toggling hide_cot parameter in the UI should correctly hide the `took n steps` buttons
- `running` loading button should only be displayed once when `hide_cot` is true and a message is being streamed
## [1.0.100] - 2024-01-10
### Added
- `on_logout` hook allowing to clear cookies when a user logs out
### Changed
- Chainlit apps won't crash anymore if the data layer is not reachable
### Fixed
- File upload now works when switching chat profiles
- Avatar with an image no longer have a background color
- If `hide_cot` is set to `true`, the UI will never get the intermediary steps (but they will still be persisted)
- Fixed a bug preventing to open past chats
## [1.0.0] - 2024-01-08
### Added
- Scroll down button
- If `hide_cot` is set to `true`, a `running` loader is displayed by default under the last message when a task is running.
### Changed
- Avatars are now always displayed
- Chat history sidebar has been revamped
- Stop task button has been moved to the input bar
### Fixed
- If `hide_cot` is set to `true`, the UI will never get the intermediary steps (but they will still be persisted)
## [1.0.0rc3] - 2023-12-21
### Fixed
- Elements are now working when authenticated
- First interaction is correctly set when resuming a chat
### Changed
- The copy button is hidden if `disable_feedback` is `true`
## [1.0.0rc2] - 2023-12-18
### Added
- Copy button under messages
- OAuth samesite cookie policy is now configurable through the `CHAINLIT_COOKIE_SAMESITE` env var
### Changed
- Relax Python version requirements
- If `hide_cot` is configured to `true`, steps will never be sent to the UI, but still persisted.
- Message buttons are now positioned below
## [1.0.0rc0] - 2023-12-12
### Added
- cl.Step
### Changed
- File upload uses HTTP instead of WS and no longer has size limitation
- `cl.AppUser` becomes `cl.User`
- `Prompt` has been split in `ChatGeneration` and `CompletionGeneration`
- `Action` now display a toaster in the UI while running
## [0.7.700] - 2023-11-28
### Added
- Support for custom HTML in message content is now an opt in feature in the config
- Uvicorn `ws_per_message_deflate` config param is now configurable like `UVICORN_WS_PER_MESSAGE_DEFLATE=false`
### Changed
- Latex support is no longer enabled by default and is now a feature in the config
### Fixed
- Fixed LCEL memory message order in the prompt playground
- Fixed a key error when using the file watcher (-w)
- Fixed several user experience issues with `on_chat_resume`
- `on_chat_end` is now always called when a chat ends
- Switching chat profiles correctly clears previous AskMessages
## [0.7.604] - 2023-11-15
### Fixed
- `on_chat_resume` now works properly with non json serializable objects
- `LangchainCallbackHandler` no longer send tokens to the wrong user under high concurrency
- Langchain cache should work when `cache` is to `true` in `config.toml`
## [0.7.603] - 2023-11-15
### Fixed
- Markdown links special characters are no longer encoded
- Collapsed messages no longer make the chat scroll
- Stringified Python objects are now displayed in a Python code block
## [0.7.602] - 2023-11-14
### Added
- Latex support (only supporting $$ notation)
- Go back button on element page
### Fixed
- Code blocks should no longer flicker or display `[object object]`.
- Now properly displaying empty messages with inlined elements
- Fixed `Too many values to unpack error` in langchain callback
- Langchain final streamed answer is now annotable with human feedback
- AzureOpenAI should now work properly in the Prompt Playground
### Changed
- Code blocks display has been enhanced
- Replaced aiohttp with httpx
- Prompt Playground has been updated to work with the new openai release (v1). Including tools
- Auth0 oauth provider has a new configurable env variable `OAUTH_AUTH0_ORIGINAL_DOMAIN`
## [0.7.500] - 2023-11-07
### Added
- `cl.on_chat_resume` decorator to enable users to continue a conversation.
- Support for OpenAI functions in the Prompt Playground
- Ability to add/remove messages in the Prompt Playground
- Plotly element to display interactive charts
### Fixed
- Langchain intermediate steps display are now much more readable
- Chat history loading latency has been enhanced
- UTF-8 characters are now correctly displayed in json code blocks
- Select widget `items` attribute is now working properly
- Chat profiles widget is no longer scrolling horizontally
## [0.7.400] - 2023-10-27
### Added
- Support for Langchain Expression Language. https://docs.chainlit.io/integrations/langchain
- UI rendering optimization to guarantee high framerate
- Chainlit Cloud latency optimization
- Speech recognition to type messages. https://docs.chainlit.io/backend/config/features
- Descope OAuth provider
### Changed
- `LangchainCallbackHandler` is now displaying inputs and outputs of intermediate steps.
### Fixed
- AskUserMessage now work properly with data persistence
- You can now use a custom okta authorization server for authentication
## [0.7.3] - 2023-10-17
### Added
- `ChatProfile` allows to configure different agents that the user can freely chose
- Multi modal support at the input bar level. Enabled by `features.multi_modal` in the config
- `cl.AskUserAction` allows to block code execution until the user clicked an action.
- Displaying readme when chat is empty is now configurable through `ui.show_readme_as_default` in the config
### Changed
- `cl.on_message` is no longer taking a string as parameter but rather a `cl.Message`
### Fixed
- Chat history is now correctly displayed on mobile
- Azure AD OAuth authentication should now correctly display the user profile picture
### Removed
- `@cl.on_file_upload` is replaced by true multi modal support at the input bar level
## [0.7.2] - 2023-10-10
### Added
- Logo is displayed in the UI header (works with custom logo)
- Azure AD single tenant is now supported
- `collapsed` attribute on the `Action` class
- Latency improvements when data persistence is enabled
### Changed
- Chat history has been entirely reworked
- Chat messages redesign
- `config.ui.base_url` becomes `CHAINLIT_URL` env variable
### Fixed
- File watcher (-w) is now working with nested module imports
- Unsupported character during OAuth authentication
## [0.7.1] - 2023-09-29
### Added
- Pydantic v2 support
- Okta auth provider
- Auth0 auth provider
- Prompt playground support for mix of template/formatted prompts
- `@cl.on_chat_end` decorator
- Textual comments to user feedback
### Fixed
- Langchain errors are now correctly indented
- Langchain nested chains prompts are now correctly displayed
- Langchain error TypeError: 'NoneType' object is not a mapping.
- Actions are now displayed on mobile
- Custom logo is now working as intended
## [0.7.0] - 2023-09-13
### Changed
- Authentication is now unopinionated:
1. `@cl.password_auth_callback` for login/password auth
2. `@cl.oauth_callback` for oAuth auth
3. `@cl.header_auth_callback` for header auth
- Data persistence is now enabled through `CHAINLIT_API_KEY` env variable
### Removed
- `@cl.auth_client_factory` (see new authentication)
- `@cl.db_client_factory` (see new data persistence)
### Added
- `disable_human_feedback` parameter on `cl.Message`
- Configurable logo
- Configurable favicon
- Custom CSS injection
- GCP Vertex AI LLM provider
- Long message collpasing feature flag
- Enable Prompt Playground feature flag
### Fixed
- History page filters now work properly
- History page does not show empty conversations anymore
- Langchain callback handler Message errors
## [0.6.4] - 2023-08-30
### Added
- `@cl.on_file_upload` to enable spontaneous file uploads
- `LangchainGenericProvider` to add any Langchain LLM in the Prompt Playground
- `cl.Message` content now support dict (previously only supported string)
- Long messages are now collapsed by default
### Fixed
- Deadlock in the Llama Index callback handler
- Langchain MessagesPlaceholder and FunctionMessage are now correctly supported
## [0.6.3] - 2023-08-22
### Added
- Complete rework of the Prompt playground. Now supports custom LLMs, templates, variables and more
- Enhanced Langchain final answer streaming
- `remove_actions` method on the `Message` class
- Button to clear message history
### Fixed
- Chainlit CLI performance issue
- Llama Index v0.8+ callback handler. Now supports messages prompts
- Tasklist display, persistence and `.remove()`
- Custom headers growing infinitely large
- Action callback can now handle multiple actions
- Langflow integration load_flow_from_json
- Video and audio elements on Safari
## [0.6.2] - 2023-08-06
### Added
- Make the chat experience configurable with Chat Settings
- Authenticate users based on custom headers with the Custom Auth client
### Fixed
- Author rename now works with all kinds of messages
- Create message error with chainlit cloud (chenjuneking)
## [0.6.1] - 2023-07-24
### Added
- Security improvements
- Haystack callback handler
- Theme customizability
### Fixed
- Allow multiple browser tabs to connect to one Chainlit app
- Sidebar blocking the send button on mobile
## [0.6.0] - 2023-07-20
### Breaking changes
- Factories, run and post process decorators are removed.
- langchain_rename becomes author_rename and works globally
- Message.update signature changed
Migration guide available [here](https://docs.chainlit.io/guides/migration/0.6.0).
### Added
- Langchain final answer streaming
- Redesign of chainlit input elements
- Possibility to add custom endpoints to the fast api server
- New File Element
- Copy button in code blocks
### Fixed
- Persist session between websocket reconnection
- The UI is now more mobile friendly
- Avatar element Path parameter
- Increased web socket message max size to 100 mb
- Duplicated conversations in the history tab
## [0.5.2] - 2023-07-10
### Added
- Add the video element
### Fixed
- Fix the inline element flashing when scrolling the page, due to un-needed re-rendering
- Fix the orange flash effect on messages
## [0.5.1] - 2023-07-06
### Added
- Task list element
- Audio element
- All elements can use the `.remove()` method to remove themselves from the UI
- Can now use cloud auth with any data persistence mode (like local)
- Microsoft auth
### Fixed
- Files in app dir are now properly served (typical use case is displaying an image in the readme)
- Add missing attribute `size` to Pyplot element
## [0.5.0] - 2023-06-28
### Added
- Llama Index integration. Learn more [here](https://docs.chainlit.io/integrations/llama-index).
- Langflow integration. Learn more [here](https://docs.chainlit.io/integrations/langflow).
### Fixed
- AskUserMessage.remove() now works properly
- Avatar element cannot be referenced in messages anymore
## [0.4.2] - 2023-06-26
### Added
- New data persistence mode `local` and `custom` are available on top of the pre-existing `cloud` one. Learn more [here](https://docs.chainlit.io/data).
## [0.4.101] - 2023-06-24
### Fixed
- Performance improvements and bug fixes on run_sync and asyncify
## [0.4.1] - 2023-06-20
### Added
- File watcher now reloads the app when the config is updated
- cl.cache to avoid wasting time reloading expensive resources every time the app reloads
### Fixed
- Bug introduced by 0.4.0 preventing to run private apps
- Long line content breaking the sidebar with Text elements
- File watcher preventing to keyboard interrupt the chainlit process
- Updated socket io to fix a security issue
- Bug preventing config settings to be the default values for the settings in the UI
## [0.4.0] - 2023-06-16
### Added
- Pyplot chart element
- Config option `default_expand_messages` to enable the default expand message settings by default in the UI (breaking change)
### Fixed
- Scoped elements sharing names are now correctly displayed
- Clickable Element refs are now correctly displayed, even if another ref being a substring of it exists
## [0.3.0] - 2023-06-13
### Added
- Moving from sync to async runtime (breaking change):
- Support async implementation (eg openai, langchain)
- Performance improvements
- Removed patching of different libraries
- Elements:
- Merged LocalImage and RemoteImage to Image (breaking change)
- New Avatar element to display avatars in messages
- AskFileMessage now supports multi file uploads (small breaking change)
- New settings interface including a new "Expand all" messages setting
- The element sidebar is resizable
### Fixed
- Secure origin issues when running on HTTP
- Updated the callback handler to langchain 0.0.198 latest changes
- Filewatcher issues
- Blank screen issues
- Port option in the CLI does not fail anymore because of os import
## [0.2.111] - 2023-06-09
### Fixed
- Pdf element reloading issue
- CI is more stable
## [0.2.110] - 2023-06-08
### Added
- `AskFileMessage`'s accept parameter can now can take a Dict to allow more fine grained rules. More infos here https://react-dropzone.org/#!/Accepting%20specific%20file%20types.
- The PDF viewer element helps you display local or remote PDF files ([documentation](https://docs.chainlit.io/api-reference/elements/pdf-viewer)).
### Fixed
- When running the tests, the chainlit cli is installed is installed in editable mode to run faster.
## [0.2.109] - 2023-05-31
### Added
- URL preview for social media share
### Fixed
- `max_http_buffer_size` is now set to 100mb, fixing the `max_size_mb` parameter of `AskFileMessage`
## [0.2.108] - 2023-05-30
### Fixed
- Enhanced security
- Global element display
- Display elements with display `page` based on their ids instead of their names
## [0.2.107] - 2023-05-28
### Added
- Rework of the Message, AskUserMessage and AskFileMessage APIs:
- `cl.send_message(...)` becomes `cl.Message(...).send()`
- `cl.send_ask_user(...)` becomes `cl.AskUserMessage(...).send()`
- `cl.send_ask_file(...)` becomes `cl.AskFileMessage(...).send()`
- `update` and `remove` methods to the `cl.Message` class
### Fixed
- Blank screen for windows users (https://github.com/Chainlit/chainlit/issues/3)
- Header navigation for mobile (https://github.com/Chainlit/chainlit/issues/12)
## [0.2.106] - 2023-05-26
### Added
- Starting to log changes in CHANGELOG.md
- Port and hostname are now configurable through the `CHAINLIT_HOST` and `CHAINLIT_PORT` env variables. You can also use `--host` and `--port` when running `chainlit run ...`.
- A label attribute to Actions to facilitate localization.
### Fixed
- Clicks on inlined `RemoteImage` now opens the image in a NEW tab.