New Features
-
Azure OpenAI and Model Endpoint Setup Guidance
- Added setup guidance for legacy Azure OpenAI model discovery, runtime data-plane calls, Foundry providers, managed identity, service principal RBAC, and API-key inference limits.
- (Ref: Azure OpenAI setup guide, model endpoint modal, Admin Settings model endpoints)
-
Tabular Semantic Kernel Large Result Pagination
-
Beta Branch Development Governance Integration
- Prepared beta capabilities for Development governance, custom pages, user settings cache changes, agent catalog customization, file sync, workflows, workspace identities, and Data Management.
- (Ref: Development merge resolution, governance integration)
-
User Settings Cache Optimization
- Added request-scoped user settings memoization and a lightweight UI settings cache for Redis and no-Redis deployments.
- (Ref:
functions_settings.py,app_settings_cache.py,dark-mode.js,sidebar.js)
-
Custom Pages
- Added administrator-managed custom pages with static assets, optional Python-backed extensions, authenticated host routes, Admin Settings controls, examples, documentation, and fail-closed coverage.
- (Ref:
route_custom_pages.py,functions_custom_pages.py)
-
Governance Controls for Endpoints, Agents, and Actions
- Added feature policies, delegated item policies, review workflows, backend enforcement, and Admin Settings allowlists for personal, group, and global endpoints, agents, and actions.
- (Ref: governance policies, Admin Settings Governance tab)
-
Governance and App Settings Cache Versioning
- Added cache-version coordination so settings and governance policy changes invalidate stale worker caches while preserving hot-path performance.
- (Ref: app settings cache, governance cache versioning)
-
Pull Request Preparation Prompt
- Added a reusable Copilot prompt for preparing SimpleChat branches for pull requests into
Development, including validation, release-note checks, and guarded push or PR creation. - (Ref:
.github/prompts/prepare-for-pull-request.prompt.md)
- Added a reusable Copilot prompt for preparing SimpleChat branches for pull requests into
-
Tableau Action
- Added a read-only Tableau action with discovery, configuration, workspace identity support, validation, schemas, and Semantic Kernel loader integration.
- (Ref:
tableau_plugin.py,tableau_plugin_factory.py,functions_tableau_operations.py,TABLEAU_ACTION.md)
-
Snowflake Action
- Added a read-only Snowflake action with tailored authentication, query limits, structured responses, Key Vault secret handling, governance labels, schemas, documentation, and coverage.
- (Ref:
SnowflakePlugin,SnowflakePluginFactory,SNOWFLAKE_ACTION.md)
-
Workflow Per-Document Analysis and Generated Office Exports
- Added Analyze mode for per-document workflow execution plus SimpleChat tools for generated Word and PowerPoint exports.
- (Ref:
functions_workflow_runner.py,functions_simplechat_operations.py,WORKFLOW_PER_DOCUMENT_ANALYSIS_AND_EXPORTS.md)
-
Group Workflows
- Added group-scoped workflow definitions, run history, per-document run items, APIs, assignment gates, admin controls, group workspace UI, and shared activity support.
- (Ref:
functions_group_workflows.py,route_backend_workflows.py,GROUP_WORKFLOWS.md)
-
Voice-Assisted Form Inputs and Agent Instruction Drafting
- Added speech-to-text controls to supported forms and an agent Instruction Brief workflow that drafts editable Markdown instructions through the configured model.
- (Ref:
form-voice-input.js,agent_modal_stepper.js,VOICE_ASSISTED_FORM_INPUTS.md)
-
Microsoft Graph Send Mail Action
- Microsoft Graph actions can now create drafts, prepare delayed-delivery drafts, or send mail from the signed-in user's mailbox with runtime validation and Graph scopes.
- (Ref:
MSGraphPlugin.send_mail,plugin_modal_stepper.js,MSGRAPH_SEND_MAIL_ACTION.md)
-
Workspace-Backed Chat Uploads
- Eligible chat uploads now queue or reuse personal workspace documents as the source of truth while preserving chat attachment behavior, progress display, tags, metadata, and fallback flow.
- (Ref:
route_frontend_chats.py,route_backend_chats.py,functions_documents.py,CHAT_UPLOAD_PERSONAL_WORKSPACE_HANDOFF.md)
-
Document Intelligence PDF and Image Extraction Modes
- Added Read/Layout/Auto extraction controls, sample-page Auto detection, extraction-mode metadata, upload source preservation, and PDF reprocess actions across workspaces.
- (Ref:
functions_content.py,functions_documents.py,DOCUMENT_INTELLIGENCE_PDF_IMAGE_EXTRACTION_MODE.md)
-
Cosmos Throughput Automation and Native Autoscale
- Added RU monitoring, manual scale actions, background automation, per-container policies, global policy enforcement, native autoscale conversion, guarded thresholds, and deployment RBAC metadata.
- (Ref:
functions_cosmos_throughput.py, Admin Settings Scale tab, Cosmos throughput docs)
-
Workflow File Sync Triggers and Batch Resume
- Workflows can trigger File Sync before runs, monitor sync changes, dynamically target changed synced documents, and resume failed Analyze items.
- (Ref:
functions_workflow_runner.py,functions_file_sync.py,WORKFLOW_FILE_SYNC_TRIGGERS.md)
-
Cloud Drive and File Sync Sources
- Added OneDrive, Azure Files, SMB sync support, provider browsing, source selection, remote change-token handling, reusable identities, scheduled/manual sync, history, tags, filters, and admin source controls.
- (Ref:
functions_file_sync.py,workspace-file-sync.js,ONEDRIVE_FILE_SYNC.md,AZURE_FILES_FILE_SYNC.md,FILE_SYNC.md)
-
Global Cloud Drive Connector Identities
- Admins can now manage File Sync cloud-drive connector credentials separately from personal user sync choices, including global connector fallback behavior.
- (Ref:
functions_workspace_identities.py,workspace-identities.js,WORKSPACE_IDENTITIES.md)
-
Conversation Feed Pagination
- Chat startup now loads pinned, unread, and first-page recent conversations with load-more and backend title search instead of loading every accessible conversation.
- (Ref:
route_backend_conversations.py,functions_conversation_feed.py,chat-conversations.js)
-
Group File Share Approval Notifications
- Added notifications and approval workflow for personal and group document shares, including recipient review actions and protected owner-group documents.
- (Ref:
route_backend_group_documents.py,functions_notifications.py,GROUP_FILE_SHARE_APPROVAL_NOTIFICATIONS.md)
-
Stats Time Windows and CSV Exports
- Added 7-day, 30-day, 90-day, and custom windows plus CSV exports for personal, group, and public stats.
- (Ref:
functions_stats_windows.py, profile/group/public stats routes)
-
Personal Workflow Access Governance
- Added personal workflow enablement, optional
WorkflowUserapp-role enforcement, route gating, and deployer app-role definitions. - (Ref: workflow access control,
PERSONAL_WORKFLOWS.md,WORKFLOW_ACCESS_CONTROL_FIX.md)
- Added personal workflow enablement, optional
-
Azure Commercial Databricks Action
- Added Databricks SQL Statement Execution action with read-only enforcement, configuration, reusable identities, factory loading, schemas, docs, and coverage.
- (Ref:
DatabricksPlugin,DatabricksPluginFactory,DATABRICKS_ACTION_CONFIGURATION.md)
-
Model Context Protocol Actions
- Added MCP action support with transport, authentication, timeout, tool allowlist, cached metadata, discovery, runtime invocation, and admin-only stdio restrictions.
- (Ref:
functions_mcp_operations.py,mcp_plugin.py,MCP_ACTION_CONFIGURATION.md)
-
Layered Message Masking
- Users can layer full-message and selected-text masks independently across personal and group conversations with shared event updates.
- (Ref:
functions_message_masking.py,chat-messages.js,chat-collaboration.js)
-
Workspace and Global Identities
- Promoted reusable identities into personal, group, public, and global identity management surfaces for File Sync, actions/plugins, model endpoints, and future integrations.
- (Ref:
functions_workspace_identities.py,route_backend_workspace_identities.py,workspace-identities.js)
-
Visio and Outlook MSG Ingestion
- Added
.vsdxand.msgingestion, searchable Visio page chunks, citation previews, original downloads, and email-message document processing. - (Ref:
functions_visio.py,functions_content.py,functions_documents.py,VISIO_INGESTION.md)
- Added
-
Assigned Knowledge for Agents
- Agent creators can bind agents to governed workspace sources, documents, and tags, and chat enforces assigned search scope server-side.
- (Ref:
functions_assigned_knowledge.py,route_backend_agents.py,chat-agents.js)
-
Deep Research and Source Review Enhancements
- Added optional Source Review, JavaScript rendering, Load More handling, model-assisted link planning, bounded deep traversal, SSRF protections, admin controls, audit details, and prompt-injection isolation.
- (Ref:
functions_source_review.py,route_backend_chats.py,SOURCE_REVIEW.md)
-
Conversation Charts and Workflow Tabular Reuse
- Added core chat chart generation, reusable workflow tabular analysis imports, and Semantic Kernel auto tool invocation in the model-only fallback path.
- (Ref:
semantic_kernel_loader.py,functions_tabular_analysis.py,functions_workflow_runner.py)
-
Generated Markdown Artifact Viewer
- Added
View MDfor generated Markdown artifacts and sanitized rendered Markdown citation previews. - (Ref:
chat-messages.js,chat-citations.js,GENERATED_ARTIFACT_MARKDOWN_VIEW.md)
- Added
-
Tabular Related Document Evidence
- Row-level tabular analysis can now resolve related non-tabular documents and include supporting excerpts in chat and generated structured exports.
- (Ref:
route_backend_chats.py,functions_search_service.py,TABULAR_RELATED_DOCUMENT_EVIDENCE.md)
-
Generated Artifact Workspace Promotion Approval
- Added
Add to Workspacefor generated analysis artifacts with immediate personal queueing and group/public approval workflows. - (Ref:
route_enhanced_citations.py, group/public document routes,chat-messages.js)
- Added
-
Chat Clipboard Paste Uploads
- Users can paste images and browser-exposed files directly into chat, using the existing upload, consent, and processing path.
- (Ref:
chat-input-actions.js,CHAT_CLIPBOARD_PASTE_UPLOADS.md)
-
Staging UI Test CI/CD and Playwright Workspaces
- Added protected Staging deployment workflow, Azure Developer CLI staging bootstrap, live UI smoke coverage, and Azure-hosted Playwright Workspace support.
- (Ref:
.github/workflows/staging-azd-ui-tests.yml,ui_tests/playwright-workspaces/)
-
Service Principal Authentication for CI UI Tests
- Added disabled-by-default
/ci-auth/sessionsupport for creating staging UI test sessions from Entra access tokens. - (Ref:
functions_authentication.py,route_frontend_authentication.py,ENABLE_CI_BEARER_SESSION_AUTH)
- Added disabled-by-default
-
Profile Sidebar Toggle Style Preference
- Added a profile preference for large versus compact sidebar hide controls across full and compact sidebar templates.
- (Ref:
profile.html, sidebar templates,sidebar.css)
Bug Fixes
-
Azure OpenAI Model Discovery Identity Split
- Legacy model discovery now uses the configured management-plane credential while inference keeps the runtime data-plane identity or key path.
- (Ref:
route_backend_models.py, deployer OpenAI RBAC,AZURE_OPENAI_MODEL_DISCOVERY_IDENTITY_FIX.md)
-
Chat Model Icon Avatars
- Saved endpoint icons now appear on model-only assistant responses while preserving agent avatar priority.
- (Ref:
route_backend_chats.py,chat-messages.js)
-
Tabular SK Python 3.13 Compatibility
-
Python 3.12 CI and XSS Guardrail Cleanup
- Updated CI to Python 3.12 and adjusted changed rendering paths to satisfy XSS guardrails without broad suppressions.
- (Ref: Python 3.12 CI, Admin Settings, group workspace delete modal, profile hero image)
-
PR Readiness Guardrail Cleanup
- Removed trailing whitespace, unnecessary
|safe, UTF-8 BOM content, and documented reviewed plugin authorization boundaries for PR validation. - (Ref: PR readiness, XSS and BAC guardrails)
- Removed trailing whitespace, unnecessary
-
Governance Admin Rendering XSS Hardening
- Rebuilt changed governance, endpoint, agent, and plugin table rendering with DOM APIs and text nodes.
- (Ref: governance admin UI, model endpoint table, plugin table rendering)
-
Group Workflow Assignment Cleanup
- Invalid nested JSON assignment payloads are dropped and group workflow assignment settings now preserve only valid group UUIDs.
- (Ref:
functions_settings.py,admin_settings.js,GROUP_WORKFLOW_ASSIGNMENT_CLEANUP_FIX.md)
-
Workflow Activity Navigation and Group Activity Gate
- Workflow Activity actions now keep the current tab open and group workflow activity views use group-specific authorization instead of the personal workflow feature flag.
- (Ref:
workspace_workflows.js,workflow-activity.js, group workflow activity docs)
-
Tabular Inline Chart Handoff
- Successful grouped CSV/XLSX results now create deterministic SimpleChat inline chart citations for streaming and non-streaming responses.
- (Ref:
route_backend_chats.py,functions_chart_operations.py,TABULAR_INLINE_CHART_HANDOFF_FIX.md)
-
Document Intelligence Upload Normalizer Import
- Fixed extraction-mode normalizer resolution to avoid upload failures and startup circular imports.
- (Ref:
functions_content.py)
-
Cosmos Autoscale and Metrics Fixes
- Fixed native autoscale migration, background cadence, REST metadata parsing, container metric dimensions, cached status rendering, save-button activation, refresh logging, and throughput refresh performance.
- (Ref:
functions_cosmos_throughput.py,background_tasks.py,admin_settings.js, Cosmos autoscale fix docs)
-
Advanced Conversation Search Matching
- Advanced Search now covers legacy and collaborative stores with explicit match modes and normalized chat-type filters.
- (Ref:
route_backend_conversations.py,chat-search-modal.js,ADVANCED_CONVERSATION_SEARCH_FIX.md)
-
Visio Preview Fidelity Fixes
- Improved Visio preview rendering for arcs, paths, master geometry, nested coordinates, connector lines, labels, embedded media, and runtime simplification.
- (Ref:
functions_visio.py, Visio preview fix docs)
-
Source Review Traversal and Citation Fixes
- Source Review now receives full web-search citation seeds, balances seed and child pages, prioritizes relevant archive links, supports one more bounded hop, and exposes richer audit details.
- (Ref:
functions_source_review.py,route_backend_chats.py, Source Review tests/docs)
-
Authenticated Request Login Activity Tracking
- Passive authenticated visits now contribute to login activity with throttling while preserving explicit OAuth login signals.
- (Ref:
functions_activity_logging.py,app.py,AUTHENTICATED_REQUEST_LOGIN_ACTIVITY_FIX.md)
-
Safety Violation Remediation Workflow
- Warn, suspend, and block actions now create notifications, apply matching access restrictions, and route through approvals when required.
- (Ref:
route_backend_safety.py,functions_safety_remediation.py,admin-safety-violations.js)
-
Group and Public Workspace Hero Color Editing
- Hero color selections now save, preview, and return through workspace branding APIs correctly.
- (Ref:
manage_group.js,manage_public_workspace.js, workspace routes)
-
Chat-Scoped Generated Tabular Exports
- Large generated JSON and CSV exports stay attached to the active chat and are cleaned up with conversation lifecycle rules when applicable.
- (Ref:
route_backend_chats.py,functions_simplechat_operations.py,chat-messages.js)
-
Fact Memory Delete Confirmation Layering
- Delete confirmation now opens above the Manage Fact Memories editor so users can confirm without closing the editor.
- (Ref:
profile.html,test_profile_fact_memory_editor.py)
-
Live Tabular Analysis Thought Progress
- Long-running tabular analysis now streams tool progress into the thoughts panel while the answer is being prepared.
- (Ref:
route_backend_chats.py,chat-thoughts.js, tabular progress tests)
-
Workspace Search Document Action Gating
- Review and Compare modes are ignored when Workspace Search is disabled, preventing stale document-selection warnings.
- (Ref:
chat-messages.js,test_chat_document_action_workspace_toggle.py)
-
Chat File Upload Client Enablement
- Effective per-user chat upload settings now serialize to browser upload guards.
- (Ref:
chats.html,CHAT_FILE_UPLOAD_CLIENT_FLAG_FIX.md)
-
Document Auto Metadata Extraction Consistency
- All supported upload types now run the same final automatic metadata extraction flow, including corrected public media chunk scoping.
- (Ref:
functions_documents.py,DOCUMENT_AUTO_METADATA_EXTRACTION_FIX.md)
-
Chat Stream Lifecycle Observability
- Added backend and frontend diagnostics for active, detached, completed, errored, aborted, and recovered chat streams.
- (Ref:
route_backend_chats.py,chat-streaming.js,CHAT_STREAM_LIFECYCLE_OBSERVABILITY_FIX.md)
-
Stored XSS Hardening
- Hardened uploaded-file previews, public tag colors, agent template actions, share/activity/masking surfaces, chat scope and conversation details, citation and file modal filenames, agent display names, workspace member rendering, Control Center public workspace members, admin rendering, and related Graph filter literals.
- (Ref: XSS fix docs,
chat-messages.js, workspace JS files, admin JS/templates, route helpers)
-
Chat Selected Document Metadata Authorization (
f046)- Chat and tabular selected-document metadata now resolves only through authorized personal, group, and public workspace paths.
- (Ref:
route_backend_chats.py,CHAT_SELECTED_DOCUMENT_METADATA_AUTHORIZATION_FIX.md)
-
Plugin Logging Authorization Fixes
- Recent invocation feed and destructive clear-log endpoint now require admin access while preserving unauthenticated and non-admin response contracts.
- (Ref:
route_plugin_logging.py, plugin logging authorization tests/docs)
-
Public Workspace Details Projection Hardening (
f034)- Non-members now receive a minimal public summary instead of the full public workspace document.
- (Ref:
route_backend_public_workspaces.py,manage_public_workspace.js,PUBLIC_WORKSPACE_DETAILS_DISCLOSURE_FIX.md)
-
Approval Route Authorization Guard Consolidation (
f033)- Admin and non-admin approval routes now share the same authorization helper before exposing approval data or executing actions.
- (Ref:
route_backend_control_center.py,functions_approvals.py)
-
Feedback Submission Ownership Enforcement (
f038)- Feedback submissions now require conversation and message targets inside the authenticated user's own conversation before persisting data.
- (Ref:
route_backend_feedback.py,FEEDBACK_AND_PLUGIN_LOG_ACCESS_CONTROL_FIX.md)
-
Authorization State Confusion Settings Hardening
- Public workspace selection and prompt operations now validate active workspace state server-side, and generic user-settings updates drop unsupported keys.
- (Ref:
functions_public_workspaces.py,route_backend_users.py,AUTHORIZATION_STATE_CONFUSION_SETTINGS_FIX.md)
-
Key Vault Plugin Secret Scope Enforcement (
f013)- Plugin secret save, runtime resolution, connection tests, and cleanup now verify secret references match expected scope and source.
- (Ref:
functions_keyvault.py,semantic_kernel_loader.py,KEY_VAULT_PLUGIN_SECRET_SCOPE_ENFORCEMENT_FIX.md)
-
Log Analytics Query History User Scope Enforcement (
f016)- Query history now binds to the authenticated user server-side and shared user-settings access denies cross-user reads/writes by default.
- (Ref:
log_analytics_plugin.py,functions_settings.py,LOG_ANALYTICS_PLUGIN_USER_SCOPE_ENFORCEMENT_FIX.md)
-
Personal Conversation Authorization Fixes
- Hardened personal conversation deletion, message/image reads, file-content retrieval, frontend rendering, and error handling for forbidden or missing message loads.
- (Ref: conversation routes,
chat-messages.js, personal conversation authorization docs)
-
Broken Access Control IDOR Hardening
- Enforced personal conversation ownership, canonicalized group/public scope, bound tabular blob and fact-memory access to the authorized request context, and escaped search filters.
- (Ref:
route_backend_chats.py, plugin helpers,BROKEN_ACCESS_CONTROL_IDOR_HARDENING_FIX.md)
-
Web Search Data Egress Hardening
- Bing-grounded web search now sends only the current user message, with updated consent copy and reduced outbound invocation metadata.
- (Ref:
route_backend_chats.py,functions_settings.py, web search tests/docs)
-
Search, Groups, Approvals, and History Authorization Hardening
- Revalidated active group selection, group prompts, approval actions, and history-grounded fallback reuse before proceeding with caller-supplied or stored identifiers.
- (Ref:
functions_search.py,functions_group.py, route hardening docs)
-
SQL ODBC Driver 18 Container Support
- Installed and registered ODBC Driver 18 in container deployments and retried saved Driver 17 strings only when the missing-driver error applies.
- (Ref:
Dockerfile, SQL plugin files,test_sql_odbc_driver_18_support.py)
-
Entra Application Deployment Stability
- Hardened Entra app registration scripts for MFA or conditional-access prompts and persisted app registration outputs into the selected AZD environment.
- (Ref:
Initialize-EntraApplication.ps1, Entra deployment tests)
-
Public Workspace Manage Script Syntax Fix
- Fixed pending request handlers and delegated member-search selection initialization parser errors.
- (Ref:
manage_public_workspace.js)
-
Chat Document Dropdown Viewport Fit Fix
- Grounded-search document dropdowns now stay inside short and mobile-influenced viewports.
- (Ref:
chat-documents.js)
User Interface Enhancements
-
Workflow Analyze Mode and Conversation Navigation
- Added per-document Analyze switch, new-tab workflow history and alert conversation actions, and Word/PowerPoint upload toggles for SimpleChat action and agent builders.
- (Ref: workflow UI, notifications, action and agent modals)
-
Personal Workflow Labeling
- Renamed the existing workspace workflow surface to
Personal Workflowsacross navigation, modal headings, primary actions, and documentation. - (Ref:
workspace.html,workspace_workflows.js,PERSONAL_WORKFLOWS.md)
- Renamed the existing workspace workflow surface to
-
Custom Workspace Hero Color Swatches
- Group and public workspace manage pages now support custom hero colors with live preview and saved custom swatch selection.
- (Ref: manage workspace templates and JS,
GROUP_PUBLIC_WORKSPACE_CUSTOM_HERO_COLORS.md)
-
Selectable Conversation-Linked Workspace Document Deletion
- Conversation delete now lists linked workspace documents and lets users choose which to remove with the conversation.
- (Ref:
chat-conversations.js, conversation/document routes)
-
Document Intelligence Extraction Terminology and Badges
- Renamed Read/Layout choices to Standard/Enhanced, added explanatory hover text, and moved extraction badges out of top-level document rows while preserving detail views.
- (Ref: Admin Settings Search & Extract, workspace document views)
-
Cosmos Throughput Table Clarity and Container Policies
- Simplified the Cosmos container table, added tooltips and setup guide test flow, preserved unavailable metrics accurately, and added a Containers modal for per-container automation policies.
- (Ref:
admin_settings.html,admin_settings.js, Cosmos throughput docs)
-
File Sync Source Configuration Flow
- Reworked the sync source modal around selected paths, subfolders, filters, provider browsing, and OneDrive global connector guidance.
- (Ref:
workspace-file-sync.js)
-
Control Center Group Token Totals
- Added all-time group token usage totals to the Control Center table, modal, and CSV export.
- (Ref:
route_backend_control_center.py,control-center.js,control_center.html)
-
Workspace Identity Modal Workflow
- Replaced inline identity forms with Add, View, and Edit modals grouped around real consumers and authentication details.
- (Ref:
workspace-identities.js,functions_workspace_identities.py)
-
Deep Research Allowed-User Management Modal
- Replaced inline user policy controls with a Manage Users modal and switched runtime behavior to allow-only access.
- (Ref:
admin_settings.html,admin_settings.js,functions_source_review.py)
-
Assistant Follow-Up Prompt Actions
- Assistant responses can render next-step options as prompt buttons with a cancelable send countdown.
- (Ref:
chat-messages.js,chats.css)
-
Workspace Document Cards and Folder-Card Views
- Added public workspace document cards, aligned view controls across workspaces, and improved multi-select and visible-only select-all behavior.
- (Ref: workspace JS/CSS, workspace templates)
-
Control Center Management Pagination
- Added page-size selectors and server-driven pagination for User, Group, and Public Workspace Management.
- (Ref:
route_backend_control_center.py,control_center.html,control-center.js)
-
Workspace Branding Heroes and Shortcuts
- Group and public workspaces now support logo upload, active workspace hero cards, owner metadata, optional logos, and direct manage shortcuts.
- (Ref:
functions_workspace_branding.py, workspace templates and tests)
-
GitHub Pages Documentation Redesign
- Redesigned the documentation shell with fixed top navigation, curated sidebar, mobile drawer, search, and right-side page rail.
- (Ref: docs layouts, includes, assets, index, UI tests)
-
Chat and Sidebar Icon-Only Controls
- Refined the chat conversation info button and compact sidebar toggle as quiet icon-only controls with accessible focus states.
- (Ref:
chats.html,_sidebar_nav.html,_sidebar_short_nav.html,sidebar.css,test_chat_sidebar_toggle_controls.py)