Skip to content

Latest commit

 

History

History
205 lines (128 loc) · 11.6 KB

File metadata and controls

205 lines (128 loc) · 11.6 KB

🎉 BotFramework Web Chat — Achievements

A curated list of major achievements by the Web Chat team. This document celebrates impactful changes, forward-looking designs, and key architectural wins.


🧱 Architecture & Core Systems

🌐 ES Modules Browser Build

Goal: Ship first-class <script type="module"> bundles for modern browsers. By: @compulim in PR #5592, #5593, #5595, #5600, #5602

  • Delivered browser-ready ES module builds with vendor chunking for optimal caching.
  • Introduced new export entries and reworked external API.
  • Added documentation for all available Web Chat inclusion options.

🧠 Part Grouping for Chain-of-Thought

Goal: Organize multi-part reasoning flows into collapsible groups within the transcript. By: @OEvgeny in PR #5553, #5585, #5590, #5608

  • Added logical grouping and context so activities can self-organize via Message entity metadata.
  • Introduced a way to render grouped activities and group-aware focus management to keep grouped conversations accessible.
  • Reworked fluent-theme approach to decorating activities.
  • Extended activity ordering to honor entity position fields when rendering grouped messages.

🛠️ Migration to micromark

Goal: Replace markdown-it with a modern and extensible markdown parser. By: @compulim in PR #5330

  • Switched to micromark, enabling MathML support and consistent parsing.
  • Foundation for better Markdown extensibility and performance.

🧼 HTML Content Transformer Middleware

Goal: Move HTML sanitization into a dedicated middleware layer. By: @compulim in PR #5338

  • Clean separation of concerns for Markdown rendering and sanitation.
  • Easier customization and more secure rendering.

🧩 Migration to npm Workspaces

Goal: Modernize monorepo tooling for better dependency and package management. By: @compulim in PR #5301

  • Dropped Lerna in favor of native npm workspaces.
  • Improves build performance and developer experience.

🎨 UI & Theming

🎨 Icon Customization via CSS Variables

Goal: Enable developers to customize Web Chat and Fluent theme icons without JavaScript overrides. By: @OEvgeny in PR #5413, #5502

  • Introduced CSS variable-based icon customization system for Web Chat and Fluent theme.
  • Reworked existing icons and fully enabled across Web Chat components.

📎 Attachment Preview for sendAttachmentOn: "send"

Goal: Improve multi-file upload UX by introducing persistent attachment previews. By: @compulim, @OEvgeny in PR #5464, #5491, #5492

  • Added SendBoxAttachmentBar to allow users to preview and remove attachments before sending.
  • Previews switch between thumbnails and list mode based on count and accessibility settings.
  • Enhances multi-folder upload workflows and aligns with modern messaging UX.

🧾 Code Block Rendering & Highlighting System

Goal: Unify and polish code block rendering across Markdown and UI components. By: @OEvgeny, @compulim in PR #5334, #5335, #5336, #5389

  • Introduced syntax highlighting for markdown blocks using Shiki.
  • Added copy buttons to all rendered code blocks and dialogs.
  • Unified presentation of fenced blocks with accessibility and clipboard improvements.

✨ Fluent Theme Overhaul

Goal: Expand and refine Fluent UI styling across all components. By: @OEvgeny in PR #5258 and others

  • Introduced "Copilot" variant and transcript-wide theming.
  • Improved accessibility, visual consistency, and component modularity.

🧱 Decorator System for Activity Styling

Goal: Enable pluggable, dynamic visual enhancements per activity. By: @OEvgeny in PR #5205, #5312

  • Introduced WebChatDecorator and ActivityDecorator.
  • Supports animated borders and style options with minimal code changes.

🗂️ Starter Prompts

Goal: Enhance onboarding by offering users suggested starter prompts before interaction. By: @compulim, @OEvgeny


🗣️ Voice & Accessibility

🎙️ Speech Recognition Enhancements

Goal: Improve real-world usability of voice input. By: @compulim, @RushikeshGavali in PR #5400, #5426

  • Support for initial silence timeout and continuous barge-in mode.
  • Makes Azure Speech more responsive and accessible.

🔊 Centralized Live Region Announcements

Goal: Improve screen reader support via centralized ARIA updates. By: @OEvgeny in PR #5251

  • Added usePushToLiveRegion hook.
  • Enables consistent and predictable accessibility behavior.

🧪 Advanced & Experimental

🧩 Shadow DOM Support

Goal: Enable safe embedding of Web Chat in custom element trees. By: @OEvgeny in PR #5196

  • Added stylesRoot, ThemeProvider.styles, and nonce support.
  • Ensures style encapsulation and isolation in Web Component environments.

🧮 TeX/MathML Markdown Support

Goal: Support use cases requiring math rendering. By: @compulim, @OEvgeny in PR #5332, #5381

  • Integrated katex via micromark-extension-math.
  • Supports \\[ \\], \\( \\), and $$ $$ syntax.

🚀 Performance & Developer Experience

🧩 Introduction of PolyMiddleware

Goal: Enable composable, reusable, and unified way for managing middleware. By: @compulim in PR #5515, #5566

  • Allows multiple middleware to be composed and applied from a single place.
  • Simplifies extension, testing, and maintenance of middleware logic.
  • Lays groundwork for Web Chat becoming a UI orchestration layer.

🧠 Memoization & Hook Optimizations

Goal: Reduce rerenders and memory footprint. By: @OEvgeny, @compulim across #5163, #5183, #5190

  • Rewrote key hooks (useActivityWithRenderer, useMemoized) for efficiency.
  • Prevents excessive renders in large conversations.

🧮 Multi-Dimensional Grouping Support

Goal: Improve activity grouping logic and performance. By: @compulim in PR #5471

  • Added styleOptions.groupActivitiesBy and useGroupActivitiesByName hook.
  • Keeps existing sender + status behavior as default.
  • New hook preferred for performance.
  • Middleware can optionally compute groupings by name.

🧪 valibot Props Validation

Goal: Modernize runtime prop validation for performance and clarity. By: @compulim in PR #5476

  • Introduced valibot to improve schema-based prop safety.
  • Reduces runtime errors and simplifies validation logic.

🧪 html2 test infrastructure

Goal: Modernize WebDriver test infrastructure to prioritize debuggability and reproducibility. By: @compulim in PR #5311, along with migrations PR #5541, PR #5543, PR #5544, PR #5545, PR #5546, PR #5547, PR #5548, PR #5549, PR #5550, PR #5576, PR #5577, PR #5649, PR #5651, PR #5652, PR #5653

  • Eliminate .js entry file.
  • Put screenshots side-by-side with test to improve debuggability.
  • Improves debuggability by running tests directly in browser.