Simple Chat

Release notes

For feature-focused and fix-focused drill-downs by version, see Features by Version and Fixes by Version.

This page includes the latest release notes inline. Older release sections are split into smaller pages by minor series.

Version index

Version Page
v0.261.061 Release notes index
v0.261.060 Release notes index
v0.261.059 Release notes index
v0.261.054 Release notes index
v0.261.053 Release notes index
v0.261.052 Release notes index
v0.261.051 Release notes index
v0.261.050 Release notes index
v0.261.049 Release notes index
v0.261.048 Release notes index
v0.261.047 Release notes index
v0.261.046 Release notes index
v0.261.045 Release notes 0.261.045 – 0.261.002
v0.261.044 Release notes 0.261.045 – 0.261.002
v0.261.043 Release notes 0.261.045 – 0.261.002
v0.261.042 Release notes 0.261.045 – 0.261.002
v0.261.041 Release notes 0.261.045 – 0.261.002
v0.261.040 Release notes 0.261.045 – 0.261.002
v0.261.030 Release notes 0.261.045 – 0.261.002
v0.261.028 Release notes 0.261.045 – 0.261.002
v0.261.027 Release notes 0.261.045 – 0.261.002
v0.261.026 Release notes 0.261.045 – 0.261.002
v0.261.025 Release notes 0.261.045 – 0.261.002
v0.261.023 Release notes 0.261.045 – 0.261.002
v0.261.021 Release notes 0.261.045 – 0.261.002
v0.261.020 Release notes 0.261.045 – 0.261.002
v0.261.019 Release notes 0.261.045 – 0.261.002
v0.261.018 Release notes 0.261.045 – 0.261.002
v0.261.017 Release notes 0.261.045 – 0.261.002
v0.261.016 Release notes 0.261.045 – 0.261.002
v0.261.015 Release notes 0.261.045 – 0.261.002
v0.261.014 Release notes 0.261.045 – 0.261.002
v0.261.013 Release notes 0.261.045 – 0.261.002
v0.261.012 Release notes 0.261.045 – 0.261.002
v0.261.011 Release notes 0.261.045 – 0.261.002
v0.261.010 Release notes 0.261.045 – 0.261.002
v0.261.009 Release notes 0.261.045 – 0.261.002
v0.261.007 Release notes 0.261.045 – 0.261.002
v0.261.006 Release notes 0.261.045 – 0.261.002
v0.261.005 Release notes 0.261.045 – 0.261.002
v0.261.004 Release notes 0.261.045 – 0.261.002
v0.261.003 Release notes 0.261.045 – 0.261.002
v0.261.002 Release notes 0.261.045 – 0.261.002
v0.261.001 Release notes 0.261.001
v0.260.025 Release notes 0.260 series
v0.260.024 Release notes 0.260 series
v0.260.023 Release notes 0.260 series
v0.260.021 Release notes 0.260 series
v0.260.020 Release notes 0.260 series
v0.260.019 Release notes 0.260 series
v0.260.018 Release notes 0.260 series
v0.260.017 Release notes 0.260 series
v0.260.016 Release notes 0.260 series
v0.260.015 Release notes 0.260 series
v0.260.014 Release notes 0.260 series
v0.260.013 Release notes 0.260 series
v0.260.012 Release notes 0.260 series
v0.260.011 Release notes 0.260 series
v0.260.010 Release notes 0.260 series
v0.260.009 Release notes 0.260 series
v0.260.008 Release notes 0.260 series
v0.260.007 Release notes 0.260 series
v0.260.006 Release notes 0.260 series
v0.260.005 Release notes 0.260 series
v0.260.004 Release notes 0.260 series
v0.260.003 Release notes 0.260 series
v0.260.002 Release notes 0.260 series
v0.260.001 Release notes 0.260 series
v0.250.231 Release notes 0.250 series
v0.250.230 Release notes 0.250 series
v0.250.229 Release notes 0.250 series
v0.250.001 Release notes 0.250 series
v0.241.007 Release notes 0.241 series
v0.241.006 Release notes 0.241 series
v0.241.002 Release notes 0.241 series
v0.241.001 Release notes 0.241 series
v0.239.002 Release notes 0.239 series
v0.237.049 Release notes 0.237 series
v0.237.011 Release notes 0.237 series
v0.237.009 Release notes 0.237 series
v0.237.007 Release notes 0.237 series
v0.237.006 Release notes 0.237 series
v0.237.005 Release notes 0.237 series
v0.237.004 Release notes 0.237 series
v0.237.003 Release notes 0.237 series
v0.237.001 Release notes 0.237 series
v0.235.025 Release notes 0.235 series
v0.235.012 Release notes 0.235 series
v0.235.003 Release notes 0.235 series

Latest release notes

(v0.261.061)

New Features

  • Opt-In Tabular Model HTTP-Attempt Diagnostics
    • Added opt-in environment-variable diagnostics (SIMPLECHAT_TABULAR_HTTP_DIAGNOSTICS, SIMPLECHAT_TABULAR_HTTP_BUDGET_SECONDS, SIMPLECHAT_TABULAR_HTTP_MAX_RETRIES, and SIMPLECHAT_TABULAR_HTTP_TIMEOUT_SECONDS) for tabular Azure OpenAI calls.
    • Records structured [TABULAR_MODEL_HTTP] telemetry covering request attempts, retries, elapsed durations, correlation headers, and pre-header transport failures without logging prompts, completions, or credentials.
    • (Ref: functions_tabular_model_diagnostics.py, functions_model_endpoint_runtime.py, route_backend_chats.py, docs/admin/operations.md)

Bug Fixes

  • Workflow Instruction Drafting Uses the Selected Metadata Endpoint
    • The Draft Workflow Instructions button now resolves its client and request model through the same metadata extraction model endpoint resolver used by document metadata extraction.
    • Workflows and agent instruction drafts no longer send the selected metadata extraction deployment to the legacy global GPT or APIM endpoint when the model is hosted on a configured AI Foundry or multi-endpoint connection.
    • (Ref: resolve_metadata_extraction_client(), route_backend_agents.py, route_backend_workflows.py, Workflow Instruction Model Endpoint Fix)
  • Tabular Analysis Required-Tool Choice Continuation Fix
    • Tabular analysis rounds now switch tool-choice behavior from required to auto after the initial tool invocation while preserving function allowlists and invocation limits, allowing the model to either request follow-up tools or return its final answer.
    • (Ref: allow_tabular_completion_after_initial_tools(), route_backend_chats.py, test_tabular_tool_error_retry_and_thoughts.py)

(v0.261.060)

Bug Fixes

  • Safety Violation Date and User Metadata
    • Safety violation list and card views now show created dates and target user names, reducing the need to open each violation to identify when it occurred and who it affected.
    • CSV exports now include a user name column and populate created, last updated, and archived timestamps using existing safety log metadata when older records are missing explicit date fields.
    • (Ref: route_backend_safety.py, admin-safety-violations.js, Safety Violation Metadata Display Fix)

(v0.261.059)

New Features

  • Configurable Content Safety Prompt Category Thresholds
    • Administrators can now set Azure AI Content Safety prompt thresholds separately for Violence, Hate, Sexual, and Self-harm.
    • Each category supports Low (2), Medium (4), and High (6), with Medium as the default to preserve previous behavior.
    • Higher threshold levels do not override model deployment guardrails.
    • (Ref: Content Safety admin settings, content_safety_category_thresholds, Content Safety Block Threshold)

User Interface Enhancements

  • Admin Settings Slider Contrast
    • Admin Settings range sliders now use the same gray tone as an off toggle switch in dark mode, making slider tracks visible against the admin page background.
    • This includes the Content Safety prompt category threshold sliders, Main Page Logo Size, and document action capability sliders.
    • (Ref: content-safety.html, branding.html, actions.html, styles.css, Admin Settings)

(v0.261.054)

Bug Fixes

  • Default System Prompt Remains Active When Files or Images Are Uploaded in Chat
    • Uploading an image, XML file, or other file directly in the chat UI no longer suppresses the configured default_system_prompt in standard or streaming chat turns.
    • Previously, chat-uploaded image and file context messages (role: 'image' and role: 'file' converted into role: 'system' entries in conversation_history_for_api) were mistaken for an existing general system prompt, causing default_system_prompt to be skipped.
    • has_general_system_prompt now checks whether default_system_prompt itself is already present in conversation_history_for_api.
    • (Ref: route_backend_chats.py, Default System Prompt Preservation With Chat Uploads Fix, #1855)

(v0.261.053)

Bug Fixes

  • Search Results Refresh After a Background Metadata Sync
    • When the background search sync finishes merging a tag or metadata change, it now clears cached search results for the document’s workspace and for every user or group with an approved share.
    • Previously, a chat or search that ran while the sync was still in progress could cache the old values and keep returning them for up to the search cache lifetime (5 minutes by default) after the sync completed.
    • (Ref: run_document_search_metadata_sync(), utils_cache.py, Document Search Metadata Sync Fix, #1657)

(v0.261.052)

Bug Fixes

  • Metadata and Tag Saves on Large Documents Finish Immediately
    • Saving tags, titles, authors, or classification on a document no longer waits for every search chunk to update. The save returns immediately, and a background sync merges the change into the search index. Group and public workspace saves no longer time out with “invalid JSON” errors, and the personal workspace dialog sends a single request again.
    • Bulk tagging, tag rename, and tag delete no longer update every chunk twice inside one request, so they finish quickly in large workspaces.
    • The search index update sends only the changed fields instead of re-downloading and re-uploading every chunk with its embedding. A 10,000-chunk document now takes about 40 Azure AI Search calls instead of about 20,000, with far fewer Cosmos write-fence operations, which sharply reduces Search and Cosmos load.
    • Failed or interrupted updates retry automatically with backoff until every chunk matches the document, so chat tag filters and citation titles and classifications converge instead of staying partially stale. A brief notice tells users when the search index is still updating.
    • (Ref: functions_documents.py, background_tasks.py, document metadata routes, Document Search Metadata Sync Fix, #1657)
  • Group Document Sharing Changes Reach Search
    • Approving, removing, or revoking a group share now updates the search index before the change is saved. Previously these changes never reached the search chunks, so approved shares might not be searchable, and a revoked group could keep search access to chunks rebuilt after an earlier approval.
    • Personal share approvals now also update the search index before they are saved, so a failed update can simply be retried instead of reporting “Already approved”.
    • When the search index cannot apply a sharing change, the change is not saved and users get a clear, retryable error.
    • Group shares approved before this update become searchable the next time that document’s sharing changes.
    • (Ref: update_document(), project_document_acl_to_chunks(), group and personal sharing routes, #1657)

(v0.261.051)

Bug Fixes

  • Large Document Metadata Saves Continue Across Batches
    • Saving tags or other metadata for large uploaded documents now synchronizes search chunk metadata in bounded batches instead of holding one long request until every chunk is updated.
    • The workspace metadata dialog continues the save through short JSON PATCH requests until the chunk sync is complete, avoiding timeout HTML responses that previously appeared in the browser as invalid JSON errors.
    • Tag saves no longer run duplicate full-document search chunk propagation, while blob metadata tag updates are still preserved.
    • (Ref: document metadata updates, tag propagation, functions_documents.py, route_backend_documents.py, workspace-documents.js, Document Metadata Chunk Sync Batching Fix)

(v0.261.050)

Bug Fixes

  • Maps From Agents Load Their Tiles Again
    • Tool results are redacted before they are stored with a reply, and the redaction treated the Azure Maps tile proxy token as a secret. Every stored map lost its token, so maps drew their markers and paths on blank tiles.
    • The token in SimpleChat’s own tile template is now kept. It is encrypted with the app’s secret key, expires, and only works on SimpleChat’s signed-in tile proxy. Every other token= value and every other secret in a tool result is still redacted.
    • Maps stored before this fix keep the redacted token and still show no tiles. Run the request again to get a map with tiles.
    • (Ref: plugin_invocation_logger.py, Azure Maps Tile Token Redaction Fix)

(v0.261.049)

Bug Fixes

  • Inline Map Attribution Shown as Text and Tiles Kept on the Tile Proxy
    • Inline maps in the chat now show a tool result’s tile attribution as plain text. OpenLayers renders attribution strings as HTML, so the text is escaped first.
    • A tool result is drawn as a map only when its tile template points at SimpleChat’s Azure Maps tile proxy (/api/azure-maps/tile). Maps from the Azure Maps action are unchanged.
    • (Ref: chat-inline-maps.js, Inline Map Attribution Text Fix)

(v0.261.048)

Bug Fixes

  • Agent Model Picker Respects Governance Policies
    • Fixed the persona workspace agent setup modal so its model dropdown now follows the same endpoint governance policies as the chat window model selector.
    • Users no longer see restricted global, personal, or group model endpoints when creating or editing agents, and governed multi-endpoint responses no longer fall back to legacy global model lists.
    • (Ref: agent model picker, endpoint governance, route_backend_agents.py, agents_common.js, Agent Model Governance Filtering Fix)

(v0.261.047)

Bug Fixes

  • Images Without OCR Text Are Now Indexed From Their Vision Description
    • Fixed text-free images, such as a photo of an empty room, ending with no search chunk, no title, and nothing chat could use, even though the AI vision model had described them. When OCR finds no text, the vision description is now indexed as the image’s chunk, so the image is searchable and final metadata extraction runs as usual.
    • Document Intelligence Layout output that is only page-number or page-break annotations, such as a stray <!-- PageNumber="J" --> read from floor tape, no longer counts as image text. Header and footer text still does. Failed or empty vision analyses are never indexed.
    • Image chunks are now embedded from the same text that is stored, including the vision description, instead of from the OCR text alone. Images with real OCR text keep their existing chunk.
    • With Enhanced extraction, a standalone image that the Content Understanding document analyzer returns nothing for is now described by the Content Understanding image analyzer before falling back to Document Intelligence Layout. This applies to workspace uploads and to images uploaded straight into a chat. The image analyzer’s Summary field is now read, which also replaces the ![image](pages/1) placeholder that images embedded in DOCX and PPTX files were indexed with.
    • The multi-modal vision model is now called through the AI connection that hosts it when multi-endpoint models are enabled, instead of always using the legacy GPT connection, which returned 404 for models deployed on another connection. The Test Vision Analysis button now uses the same connection as ingestion.
    • (Ref: #1583, functions_documents.py, functions_content.py, functions_content_understanding.py, functions_model_endpoint_types.py, route_backend_settings.py, route_frontend_chats.py, Image Description Indexing Without OCR Text Fix)
  • Image Generation Uses The gpt-image API Version By Default
    • The default Azure OpenAI image generation API version is now 2025-04-01-preview, the newest dated Azure OpenAI API version and the one documented for gpt-image-1, gpt-image-1.5, and gpt-image-2. The previous 2024-12-01-preview default predates gpt-image support.
    • Existing deployments still storing the previous default, or a blank value, are upgraded automatically when settings load. Any other saved version is kept, and the APIM image generation API version is never changed because the gateway defines it.
    • (Ref: functions_settings.py, azure_openai_image_gen_api_version, Image Generation API Version Default Fix)
  • Deployers Grant The App Identity Key Vault Secrets Officer
    • Fixed credential saves failing with ForbiddenByRbac when Key Vault secret storage is enabled on deployments created by the Bicep, Terraform, or Azure CLI deployers. The deployers gave the application identities Key Vault Secrets User, which can read secrets but cannot create, update, or delete the ones SimpleChat writes. Test Key Vault connection only lists secrets, so it passed and hid the problem.
    • The Bicep (container and native Python), Terraform, and Azure CLI deployers now grant Key Vault Secrets Officer at vault scope. On vaults that use access policies, the Azure CLI deployer adds get, list, set, and delete secret permissions instead. Existing Secrets User assignments are left in place, and Terraform stops tracking its old assignment without deleting it.
    • Existing environments pick up the new role on their next azd provision, Terraform apply, or Azure CLI deployer run; azd deploy does not change role assignments. Included in deployer version 1.0.32 as a backport of the deployer portion of PR #1511.
    • (Ref: PR #1587, setPermissions.bicep, setNativeWebAppPermissions.bicep, deployers/terraform/main.tf, deploy-simplechat.ps1, test_deployer_key_vault_secret_permissions.py)

(v0.261.046)

Bug Fixes

  • Chat Upload File Access Errors Avoid Browser-Realm Checks
    • Hardened chat upload recovery messaging so rejected browser upload requests no longer depend on a realm-specific TypeError check.
    • Fetch preparation and transport failures now consistently identify the selected file and show the same recovery guidance for locked files, cloud-placeholder files, and interrupted local upload requests.
    • Also removed unsafe HTML-string construction from the retry modal’s model-option cloning and reasoning-level controls.
    • (Ref: chat upload file access handling, retry modal rendering, chat-input-actions.js, chat-retry.js, test_chat_clipboard_paste_upload_support.py)