Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
14c3195
Feature/thoughts (#778)
paullizer Mar 6, 2026
80af084
Fix bugs 2026 03 05 (#779)
paullizer Mar 6, 2026
b8a91b0
Feature tabular data (#780)
paullizer Mar 6, 2026
36d79d2
Fix bugs 2026 03 05 (#781)
paullizer Mar 6, 2026
a23023e
Updated all 4 @kernel_function descriptions in sql_schema_plugin.py t…
paullizer Mar 6, 2026
09d33e3
improve thought timeline
paullizer Mar 6, 2026
8be4f31
added export pdf and conversation summary
paullizer Mar 9, 2026
7bf1e6e
Merge branch 'Development' into Thought-and-fixes
paullizer Mar 9, 2026
38ea889
Update release_notes.md
paullizer Mar 9, 2026
0f370dd
Merge branch 'Thought-and-fixes' of https://github.com/microsoft/simp…
paullizer Mar 9, 2026
55f539b
updates to tabular processing
paullizer Mar 12, 2026
8b3a712
improved tool calling and thought tracking
paullizer Mar 13, 2026
71ca9dd
resolved bug fixes
paullizer Mar 13, 2026
4eddb1d
removed test files
paullizer Mar 13, 2026
1b81680
multi-tab excel support
paullizer Mar 13, 2026
59969ab
fix agent creation bug
paullizer Mar 13, 2026
d034247
added tag view to document lists in groups and public workspaces
paullizer Mar 16, 2026
6f856fe
support key vault, supported ext update, 429 wait support, move TAB vars
paullizer Mar 17, 2026
df10715
Fixed the streaming/thought regression
paullizer Mar 17, 2026
7bb95f3
improved multi-tab
paullizer Mar 18, 2026
ba56b25
big improvement in multi-tab support
paullizer Mar 18, 2026
c32e914
Merge branch 'Development' into Thought-and-fixes
paullizer Mar 18, 2026
5df24e4
added search to scope, tags, prompts, llms, and agents dropdown
paullizer Mar 18, 2026
690be83
Merge branch 'Thought-and-fixes' of https://github.com/microsoft/simp…
paullizer Mar 18, 2026
9f85f67
improve button layout in chat
paullizer Mar 18, 2026
88ed93d
fixed reasoning button status on chats.html load
paullizer Mar 18, 2026
54e37c8
made streaming primary
paullizer Mar 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,5 @@ flask_session
tmp**cwd
/tmp_images
nul
/.github/plans
*.xlsx
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ return render_template('page.html', settings=public_settings)

## Version Management

- Its important to update the version at the end of every plan
- Version is stored in `config.py`: `VERSION = "X.XXX.XXX"`
- When incrementing, only change the third segment (e.g., `0.238.024` -> `0.238.025`)
- Include the current version in functional test file headers and documentation files
Expand All @@ -83,7 +84,7 @@ return render_template('page.html', settings=public_settings)

## Release Notes

After completing code changes, offer to update `docs/explanation/release_notes.md`.
After completing plans and code changes, offer to update `docs/explanation/release_notes.md`.

- Add entries under the current version from `config.py`
- If the version was bumped, create a new section at the top: `### **(vX.XXX.XXX)**`
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ azd up
- **Metadata Extraction (Optional)**: Apply an AI model (configurable GPT model via Admin Settings) to automatically generate keywords, two-sentence summaries, and infer author/date for uploaded documents. Allows manual override for richer search context.
- **File Processing Logs (Optional)**: Enable verbose logging for all ingestion pipelines (workspaces and ephemeral chat uploads) to aid in debugging, monitoring, and auditing file processing steps.
- **Redis Cache (Optional)**: Integrate Azure Cache for Redis to provide a distributed, high-performance session store. This enables true horizontal scaling and high availability by decoupling user sessions from individual app instances.
- **SQL Database Agents (Optional)**: Connect agents to Azure SQL or other SQL databases through configurable SQL Query and SQL Schema plugins. Database schema is automatically discovered and injected into agent instructions at load time, enabling agents to answer natural language questions by generating and executing SQL queries without requiring users to know table or column names.
- **Authentication & RBAC**: Secure access via Azure Active Directory (Entra ID) using MSAL. Supports Managed Identities for Azure service authentication, group-based controls, and custom application roles (`Admin`, `User`, `CreateGroup`, `SafetyAdmin`, `FeedbackAdmin`).
- **Supported File Types**:

Expand Down
4 changes: 4 additions & 0 deletions application/single_app/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
from route_backend_public_prompts import *
from route_backend_user_agreement import register_route_backend_user_agreement
from route_backend_conversation_export import register_route_backend_conversation_export
from route_backend_thoughts import register_route_backend_thoughts
from route_backend_speech import register_route_backend_speech
from route_backend_tts import register_route_backend_tts
from route_enhanced_citations import register_enhanced_citations_routes
Expand Down Expand Up @@ -667,6 +668,9 @@ def list_semantic_kernel_plugins():
# ------------------- API User Agreement Routes ----------
register_route_backend_user_agreement(app)

# ------------------- API Thoughts Routes ----------------
register_route_backend_thoughts(app)

# ------------------- Extenral Health Routes ----------
register_route_external_health(app)

Expand Down
24 changes: 20 additions & 4 deletions application/single_app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
EXECUTOR_TYPE = 'thread'
EXECUTOR_MAX_WORKERS = 30
SESSION_TYPE = 'filesystem'
VERSION = "0.239.011"
VERSION = "0.239.127"

SECRET_KEY = os.getenv('SECRET_KEY', 'dev-secret-key-change-in-production')

Expand Down Expand Up @@ -260,6 +260,8 @@ def get_redis_cache_infrastructure_endpoint(redis_hostname: str) -> str:
storage_account_user_documents_container_name = "user-documents"
storage_account_group_documents_container_name = "group-documents"
storage_account_public_documents_container_name = "public-documents"
storage_account_personal_chat_container_name = "personal-chat"
storage_account_group_chat_container_name = "group-chat"

# Initialize Azure Cosmos DB client
cosmos_endpoint = os.getenv("AZURE_COSMOS_ENDPOINT")
Expand Down Expand Up @@ -462,6 +464,18 @@ def get_redis_cache_infrastructure_endpoint(redis_hostname: str) -> str:
default_ttl=-1 # TTL disabled by default, enabled per-document for auto-cleanup
)

cosmos_thoughts_container_name = "thoughts"
cosmos_thoughts_container = cosmos_database.create_container_if_not_exists(
id=cosmos_thoughts_container_name,
partition_key=PartitionKey(path="/user_id")
)

cosmos_archived_thoughts_container_name = "archive_thoughts"
cosmos_archived_thoughts_container = cosmos_database.create_container_if_not_exists(
id=cosmos_archived_thoughts_container_name,
partition_key=PartitionKey(path="/user_id")
)

def ensure_custom_logo_file_exists(app, settings):
"""
If custom_logo_base64 or custom_logo_dark_base64 is present in settings, ensure the appropriate
Expand Down Expand Up @@ -748,9 +762,11 @@ def initialize_clients(settings):
# This addresses the issue where the application assumes containers exist
if blob_service_client:
for container_name in [
storage_account_user_documents_container_name,
storage_account_group_documents_container_name,
storage_account_public_documents_container_name
storage_account_user_documents_container_name,
storage_account_group_documents_container_name,
storage_account_public_documents_container_name,
storage_account_personal_chat_container_name,
storage_account_group_chat_container_name
]:
try:
container_client = blob_service_client.get_container_client(container_name)
Expand Down
Loading
Loading