Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
287c718
azure-ai-search-index-backup-restore - Added new azure ai search inde…
chadpalmer Mar 16, 2026
368ea98
Merge branch 'feedback-user-timeout' into azure-ai-search-index-backu…
chadpalmer Mar 19, 2026
aace98e
azure-ai-search-index-backup-restore - Added Azure connection option …
chadpalmer Mar 23, 2026
2d71528
azure-ai-search-index-backup-restore - Fixed merge conflict.
chadpalmer Mar 25, 2026
33eac4d
azure-ai-search-index-backup-restore - Added direct to blob storage a…
chadpalmer Mar 27, 2026
0527e8d
Merge pull request #800 from Xeelee33/feedback-user-timeout
Bionic711 Apr 1, 2026
ec117ec
Fix/20260331 (#818)
paullizer Apr 2, 2026
c5b157c
azure-ai-search-index-backup-restore - Fixed merge conflict.
chadpalmer Apr 3, 2026
db32725
azure-ai-search-index-backup-restore - Updated restore script to add …
chadpalmer Apr 6, 2026
187d570
Fix/doc versioning (#821)
paullizer Apr 7, 2026
9d396aa
azure-ai-search-index-backup-restore - Fixed merge conflict.
chadpalmer Apr 7, 2026
108b6a1
Feature/support menu (#824)
paullizer Apr 7, 2026
cfae295
azure-ai-search-index-backup-restore - Added automated script set up …
chadpalmer Apr 7, 2026
6b18370
Fix/20260407 (#826)
paullizer Apr 8, 2026
eaa82cc
Release notes (#828)
paullizer Apr 8, 2026
54b48f6
Development (#827)
paullizer Apr 8, 2026
e86c093
Fix/0.241.001 videos (#830)
paullizer Apr 8, 2026
6d0b627
Fix/20260408 (#832)
paullizer Apr 8, 2026
7ee5fad
Merge branch 'Staging' into Development
paullizer Apr 8, 2026
776211a
Development (#831)
paullizer Apr 8, 2026
b07e3a5
Merge branch 'main' into Staging
paullizer Apr 8, 2026
e556be3
v0.241.001 - GA (#835)
paullizer Apr 8, 2026
18fe665
Docs/20260408 videos (#837)
paullizer Apr 8, 2026
6520f0b
Development (#838)
paullizer Apr 8, 2026
1062cbd
Merge branch 'main' into Staging
paullizer Apr 8, 2026
7bb6651
Staging (#839)
paullizer Apr 8, 2026
6026d34
Docs/20260408 videos (#840)
paullizer Apr 8, 2026
40ae69e
Merge branch 'Staging' into Development
paullizer Apr 8, 2026
0727a97
v0.241.002 - Development (#841)
paullizer Apr 8, 2026
1d3cb6d
v0.241.002 (#842)
paullizer Apr 8, 2026
7bb10cb
Docs/20260408 videos (#843)
paullizer Apr 8, 2026
89cdd12
Merge branch 'Staging' into Development
paullizer Apr 8, 2026
ddc105f
Development (#844)
paullizer Apr 8, 2026
cf6f0db
Merge branch 'main' into Staging
paullizer Apr 8, 2026
f4d5c8e
Updated github pages (#845)
paullizer Apr 8, 2026
59ed754
Development - v0.241.006 (#846)
paullizer Apr 9, 2026
9162930
group workspace fix (#847)
paullizer Apr 9, 2026
5164589
Merge branch 'Staging' into Development
paullizer Apr 9, 2026
854ff69
Development (#848)
paullizer Apr 9, 2026
9a53d07
Merge branch 'main' into Staging
paullizer Apr 9, 2026
2112192
Bugfix/850 (#851)
Bionic711 Apr 9, 2026
17025e5
Docs/video speech update (#852)
paullizer Apr 9, 2026
57acc5f
Action/release notes (#853)
paullizer Apr 9, 2026
b22f215
Merge branch 'Staging' into Development
paullizer Apr 9, 2026
8ba1b2e
Development (#854)
paullizer Apr 9, 2026
5969ac1
fix bug for media enhanced citations (#855)
paullizer Apr 9, 2026
10f9bb2
Merge branch 'Staging' into Development
paullizer Apr 9, 2026
63984d1
Development (#856)
paullizer Apr 9, 2026
059369d
v0.241.006 (#849)
paullizer Apr 9, 2026
15bc1b1
Merge branch 'main' into Staging
paullizer Apr 9, 2026
99d6997
Merge branch 'Staging' into Development
paullizer Apr 9, 2026
1ec813c
added contributing details (#857)
paullizer Apr 13, 2026
ef945e5
Visual and content update to Github Pages (#858)
paullizer Apr 13, 2026
c176f84
Development (#860)
paullizer Apr 13, 2026
b4279f1
Merge branch 'main' into Staging
paullizer Apr 13, 2026
67dd176
Updates to contributor and github pages (#861)
paullizer Apr 13, 2026
d9caaa3
Merge branch 'main' into Development
paullizer Apr 13, 2026
c7815e3
Merge branch 'Staging' into Development
paullizer Apr 13, 2026
2c14763
azure-ai-search-index-backup-restore - Fixed merge conflict.
chadpalmer Apr 14, 2026
9b21407
azure-ai-search-index-backup-restore - Added setup scripts.
chadpalmer Apr 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .github/instructions/update_version.instructions.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
applyTo: '**'
---
After a code change, update the version
After a code change, update the version.
If updating in /docs, do not increment the version.

Example
Before Code Changes
Expand Down
44 changes: 18 additions & 26 deletions .github/workflows/release-notes-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,10 @@ jobs:
uses: tj-actions/changed-files@v46.0.1
with:
files_yaml: |
code:
- 'application/single_app/**/*.py'
- 'application/single_app/**/*.js'
- 'application/single_app/**/*.html'
- 'application/single_app/**/*.css'
application:
- 'application/**'
release_notes:
- 'docs/explanation/release_notes.md'
config:
- 'application/single_app/config.py'

- name: Check for feature/fix keywords in PR
id: check-keywords
Expand Down Expand Up @@ -66,8 +61,7 @@ jobs:
- name: Determine if release notes update is required
id: require-notes
env:
CODE_CHANGED: ${{ steps.changed-files.outputs.code_any_changed }}
CONFIG_CHANGED: ${{ steps.changed-files.outputs.config_any_changed }}
APPLICATION_CHANGED: ${{ steps.changed-files.outputs.application_any_changed }}
RELEASE_NOTES_CHANGED: ${{ steps.changed-files.outputs.release_notes_any_changed }}
HAS_FEATURE: ${{ steps.check-keywords.outputs.has_feature }}
HAS_FIX: ${{ steps.check-keywords.outputs.has_fix }}
Expand All @@ -76,8 +70,7 @@ jobs:
echo "================================"
echo "📋 PR Analysis Summary"
echo "================================"
echo "Code files changed: $CODE_CHANGED"
echo "Config changed: $CONFIG_CHANGED"
echo "Application files changed: $APPLICATION_CHANGED"
echo "Release notes updated: $RELEASE_NOTES_CHANGED"
echo "Feature keywords found: $HAS_FEATURE"
echo "Fix keywords found: $HAS_FIX"
Expand All @@ -88,27 +81,26 @@ jobs:
needs_notes="false"
reason=""

if [[ "$HAS_FEATURE" == "true" ]]; then
needs_notes="true"
reason="Feature-related keywords detected in PR title/body"
elif [[ "$HAS_FIX" == "true" ]]; then
needs_notes="true"
reason="Fix-related keywords detected in PR title/body"
elif [[ "$CODE_CHANGED" == "true" && "$CONFIG_CHANGED" == "true" ]]; then
needs_notes="true"
reason="Both code and config.py were modified"
if [[ "$APPLICATION_CHANGED" == "true" ]]; then
if [[ "$HAS_FEATURE" == "true" ]]; then
needs_notes="true"
reason="Feature-related keywords detected and files under application/ changed"
elif [[ "$HAS_FIX" == "true" ]]; then
needs_notes="true"
reason="Fix-related keywords detected and files under application/ changed"
fi
fi

echo "needs_notes=$needs_notes" >> $GITHUB_OUTPUT
echo "reason=$reason" >> $GITHUB_OUTPUT

- name: Validate release notes update
env:
CODE_CHANGED: ${{ steps.changed-files.outputs.code_any_changed }}
APPLICATION_CHANGED: ${{ steps.changed-files.outputs.application_any_changed }}
RELEASE_NOTES_CHANGED: ${{ steps.changed-files.outputs.release_notes_any_changed }}
NEEDS_NOTES: ${{ steps.require-notes.outputs.needs_notes }}
REASON: ${{ steps.require-notes.outputs.reason }}
CODE_FILES: ${{ steps.changed-files.outputs.code_all_changed_files }}
APPLICATION_FILES: ${{ steps.changed-files.outputs.application_all_changed_files }}
run: |
echo ""

Expand All @@ -122,8 +114,8 @@ jobs:
echo "This PR appears to contain changes that should be documented"
echo "in the release notes (docs/explanation/release_notes.md)."
echo ""
echo "📁 Code files changed:"
echo "$CODE_FILES" | tr ' ' '\n' | sed 's/^/ - /'
echo "📁 Application files changed:"
echo "$APPLICATION_FILES" | tr ' ' '\n' | sed 's/^/ - /'
echo ""
echo "💡 Please consider adding an entry to release_notes.md describing:"
echo " • New features added"
Expand All @@ -138,8 +130,8 @@ jobs:
exit 0
elif [[ "$RELEASE_NOTES_CHANGED" == "true" ]]; then
echo "✅ Release notes have been updated - great job!"
elif [[ "$CODE_CHANGED" != "true" ]]; then
echo "ℹ️ No significant code changes detected - release notes update not required."
elif [[ "$APPLICATION_CHANGED" != "true" ]]; then
echo "ℹ️ No files under application/ changed - release notes update not required."
else
echo "ℹ️ Changes appear to be minor - release notes update optional."
fi
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,7 @@ nul
/.github/plans
*.xlsx
/artifacts/tests
/artifacts/tmp/*
/artifacts/tmp
scripts/agent.json
scripts/me.json
103 changes: 103 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Contributing to SimpleChat

This repository uses the standard `CONTRIBUTING.md` filename so GitHub can surface the guide automatically.
The documentation-site copy lives at `docs/contributing.md`, and both files should stay aligned.

## Contribution Flow

SimpleChat contributions should be made through a fork-based workflow.

1. Fork the repository.
2. Clone your fork locally.
3. Add the main SimpleChat repository as `upstream`.
4. Create a new branch from the upstream `Development` branch.
5. Make your changes in that new branch.
6. Push the branch to your fork.
7. Open a pull request from your fork branch back to the main SimpleChat repository's `Development` branch.

Do not open contributor pull requests directly to `Staging` or `main`. The repository uses a staged promotion flow: `Development` -> `Staging` -> `main`.
Use the branch names exactly as written here. In this repository, `Development` and `Staging` are capitalized.
After a contribution is merged into `Development`, the SimpleChat team handles promotion forward.

<!-- Optional image placeholder:
Add a branch-flow diagram here later if you want a visual version of the process.

Example:
![SimpleChat contribution flow](docs/images/contribution-flow.png)
-->

## Suggested Git Commands

Use whatever Git workflow you prefer, but this is the expected starting point:

```bash
git clone <your-fork-url>
cd simplechat
git remote add upstream <simplechat-upstream-url>
git fetch upstream
git switch -c feature/my-change upstream/Development
```

When you are ready to publish your work:

```bash
git push -u origin feature/my-change
```

If your branch falls behind, sync it from `upstream/Development` before opening or updating the pull request.

## Local Development

Before contributing, make sure you can run SimpleChat locally.

Recommended local setup in VS Code uses a repo-local `.venv` with Python 3.12.

From the repo root in PowerShell:

```powershell
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r application/single_app/requirements.txt
Set-Location application/single_app
$env:FLASK_DEBUG = "1"
python app.py
```

For the full local workflow, environment guidance, and notes about Docker, WSL2, and Gunicorn validation, see:

- [README.md](./README.md)
- [docs/setup_instructions_manual.md](./docs/setup_instructions_manual.md)
- [docs/explanation/running_simplechat_locally.md](./docs/explanation/running_simplechat_locally.md)

## Pull Request Expectations

Keep pull requests focused and easy to review.

- Base your work on `Development`, not `main`.
- Keep unrelated refactors out of the same pull request.
- Explain what changed, why it changed, and how you tested it.
- Include screenshots or short recordings for UI changes when helpful.
- Call out any configuration, schema, security, or deployment impact.
- Update documentation when user-facing behavior or setup steps change.

## Tests and Validation

Before opening a pull request, run the tests that match your change.

- Add or update functional tests for bug fixes and new features when appropriate.
- Run relevant tests from `functional_tests/` and `ui_tests/` when your change affects those areas.
- If you change Flask routes, keep the existing Swagger route decorator pattern intact.

Pull requests are reviewed by the SimpleChat team and go through repository validation. Depending on the files changed, that can include Python syntax checks, release-note validation, Swagger route validation, and additional maintainer review. Maintainers may also run additional security or AI-assisted review before merge.

## Security and Repo Conventions

- Never commit secrets, keys, or environment-specific credentials.
- Review [SECURITY.md](./SECURITY.md) before submitting security-sensitive changes.
- Follow the repository's existing structure and conventions instead of introducing broad cleanup changes.
- If you use AI-assisted tooling while contributing, also review [CLAUDE.md](./CLAUDE.md) and [.github/copilot-instructions.md](./.github/copilot-instructions.md) for repo-specific guidance.

## Need Help?

If you are unsure about the right target branch or how to structure a change, open a draft pull request against `Development` and explain the question in the description. That gives the maintainers a concrete starting point for feedback.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ The application utilizes **Azure Cosmos DB** for storing conversations, metadata

[Simple Chat Documentation | Simple Chat Documentation](https://microsoft.github.io/simplechat/)

## Contributing

See [CONTRIBUTING.md](./CONTRIBUTING.md) for the fork-based workflow, target branch guidance, and local development references for SimpleChat contributors.

## Quick Deploy

[Detailed deployment Guide](./deployers/bicep/README.md)
Expand Down Expand Up @@ -174,7 +178,7 @@ azd up
- The container already starts Gunicorn through `application/single_app/Dockerfile`.
- If your environment needs private or self-signed certificate authorities for outbound TLS checks to internal services, add them during image build using [docs/how-to/docker_customization.md](docs/how-to/docker_customization.md).

## Native Python
### Native Python
- For **native Python App Service** deployments, deploy the `application/single_app` folder and set the App Service Startup command explicitly.

Native Python deployment references:
Expand Down
7 changes: 3 additions & 4 deletions application/external_apps/bulkloader/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
requests
msal
logging
dotenv
requests==2.33.0
msal==1.31.0
python-dotenv==0.21.0
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,17 @@
"video_indexer_endpoint": "https://api.videoindexer.ai",
"video_indexer_location": "",
"video_indexer_account_id": "",
"video_indexer_api_key": "",
"video_indexer_resource_group": "",
"video_indexer_subscription_id": "",
"video_indexer_account_name": "",
"video_indexer_arm_api_version": "2021-11-10-preview",
"video_indexer_arm_api_version": "2025-04-01",
"video_index_timeout": 600,
"speech_service_endpoint": "https://eastus.api.cognitive.microsoft.com",
"speech_service_location": "eastus",
"speech_service_subscription_id": "",
"speech_service_resource_group": "",
"speech_service_resource_name": "",
"speech_service_resource_id": "",
"speech_service_locale": "en-US",
"speech_service_key": "",
"classification_banner_enabled": true,
Expand Down
8 changes: 3 additions & 5 deletions application/external_apps/databaseseeder/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
requests
msal
logging
dotenv
flask
requests==2.33.0
msal==1.31.0
python-dotenv==0.21.0
4 changes: 4 additions & 0 deletions application/single_app/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
from route_frontend_public_workspaces import *
from route_frontend_safety import *
from route_frontend_feedback import *
from route_frontend_support import *
from route_frontend_notifications import *

from route_backend_chats import *
Expand Down Expand Up @@ -863,6 +864,9 @@ def list_semantic_kernel_plugins():
# ------------------- Feedback Routes -------------------
register_route_frontend_feedback(app)

# ------------------- Support Routes --------------------
register_route_frontend_support(app)

# ------------------- Notifications Routes --------------
register_route_frontend_notifications(app)

Expand Down
5 changes: 2 additions & 3 deletions application/single_app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@
session,
send_from_directory,
send_file,
Markup,
current_app
)
from markupsafe import Markup
from werkzeug.utils import secure_filename
from datetime import datetime, timezone, timedelta
from functools import wraps
Expand Down Expand Up @@ -94,7 +94,7 @@
EXECUTOR_TYPE = 'thread'
EXECUTOR_MAX_WORKERS = 30
SESSION_TYPE = 'filesystem'
VERSION = "0.240.006"
VERSION = "0.241.012"

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

Expand Down Expand Up @@ -150,7 +150,6 @@ def get_allowed_extensions(enable_video=False, enable_audio=False):

Args:
enable_video: Whether video file support is enabled

Returns:
set: Allowed file extensions
"""
Expand Down
Loading
Loading