Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
240 commits
Select commit Hold shift + click to select a range
4e4f105
Add custom subdomain support for OpenAI and Speech Service in Terraform
Jan 2, 2026
be56540
Merge branch 'Development' of https://github.com/vivche/simplechat-de…
Jan 7, 2026
e13ba0c
Merge remote-tracking branch 'upstream/Development' into Development
Jan 23, 2026
087fb3d
feat: Add ServiceNow integration documentation and bug fixes
Jan 23, 2026
502355f
Removed the readme files for bug fix details
Jan 24, 2026
33bee68
Updated servicenow integration readme
Jan 24, 2026
cd8c520
chore: Revert custom logo changes to upstream version
Jan 24, 2026
fb8181b
chore: Revert terraform main.tf to upstream version
Jan 24, 2026
660d76c
Removed the two openai sample spec downloaed from servicennow site
Jan 24, 2026
de866eb
Update docs/how-to/agents/ServiceNow/servicenow_agent_instructions.txt
vivche Jan 24, 2026
20f994a
Update docs/how-to/agents/ServiceNow/open_api_specs/sample_servicenow…
vivche Jan 24, 2026
351f143
Update docs/how-to/azure_speech_managed_identity_manul_setup.md
vivche Jan 24, 2026
5fe5b14
Update application/single_app/semantic_kernel_plugins/openapi_plugin_…
vivche Jan 24, 2026
9626219
Checked in the bug fix detail readme to docs/explanation/fixes/v0.236…
Jan 24, 2026
6364827
Merge branch 'servicenow-integration' of https://github.com/vivche/si…
Jan 24, 2026
dce54a1
Added version number to the feature readme files
Jan 24, 2026
8353d77
Added version number to document, and removed redudant import statement
Jan 24, 2026
5aa7007
refactor: use _ for intentionally unused variable in AI Search test
Jan 24, 2026
548d8d8
Removed azure_speech_managed_indeity_manual readme file since it is u…
Jan 24, 2026
62b0b5b
update version numbers to 0.236.012 in bug fix documentation
Jan 24, 2026
b0be501
Update application/single_app/semantic_kernel_loader.py
vivche Jan 24, 2026
e264a13
Update docs/how-to/agents/ServiceNow/open_api_specs/sample_now_knowle…
vivche Jan 24, 2026
b04bd67
Update docs/explanation/fixes/v0.236.012/AZURE_AI_SEARCH_TEST_CONNECT…
vivche Jan 24, 2026
84c01e9
Update docs/how-to/agents/ServiceNow/open_api_specs/sample_now_knowle…
vivche Jan 24, 2026
c8e383e
Update docs/how-to/agents/ServiceNow/open_api_specs/sample_servicenow…
vivche Jan 24, 2026
39dc7a4
Update docs/explanation/fixes/v0.236.012/GROUP_AGENT_LOADING_FIX.md
vivche Jan 24, 2026
2e8c737
Remvoed debug statements that might include senstive info
Jan 24, 2026
d0581d5
Merge branch 'servicenow-integration' of https://github.com/vivche/si…
Jan 24, 2026
0c23a78
Rollback Azure AI Search test connection fix for separate PR
Jan 24, 2026
7f8248a
Update application/single_app/semantic_kernel_plugins/openapi_plugin_…
vivche Jan 24, 2026
a0fbffd
Update docs/explanation/fixes/v0.236.012/GROUP_AGENT_LOADING_FIX.md
vivche Jan 24, 2026
4bac07a
Update docs/explanation/fixes/v0.236.012/GROUP_ACTION_OAUTH_SCHEMA_ME…
vivche Jan 24, 2026
1c31db4
Update docs/how-to/agents/ServiceNow/SERVICENOW_OAUTH_SETUP.md
vivche Jan 24, 2026
7e0c688
Fix Azure AI Search test connection with managed identity
Jan 24, 2026
6b0164a
Fix Azure AI Search test connection with managed identity
Jan 24, 2026
c910ede
Corrected file folder name
Jan 24, 2026
f188224
Merge branch 'ai-search-test-connection-fix' of https://github.com/vi…
Jan 24, 2026
8ae8518
Corrected the version number to reference 0.236.012
Jan 24, 2026
a82ecb7
Removed unneeded folder and document
Jan 24, 2026
589291b
Revert terraform main.tf to upstream/Development version
Jan 24, 2026
d017028
updated the logging logic when running retention delete with archivin…
paullizer Jan 24, 2026
2e8e87a
Corrected version to 0.236.011 (#645)
paullizer Jan 26, 2026
6042461
v0.237.001 (#649)
paullizer Jan 26, 2026
9c698af
Merge branch 'Staging' into Development
paullizer Jan 26, 2026
84e00cb
Use Microsoft python base image
clarked-msft Jan 26, 2026
317c6ee
Add python ENV vars
clarked-msft Jan 26, 2026
25f41fb
Add python ENV vars
clarked-msft Jan 26, 2026
0753f52
Install deps to systme
clarked-msft Jan 26, 2026
f2958f0
Add temp dir to image and pip conf support
clarked-msft Jan 26, 2026
efd6fe7
Add custom-ca-certificates dir
clarked-msft Jan 26, 2026
231b792
Merge pull request #653 from clarked-msft/msft-python-image
Bionic711 Jan 26, 2026
7d0a792
Logo bug fix (#654)
paullizer Jan 26, 2026
1cdb27a
Merge branch 'Staging' into Development
paullizer Jan 26, 2026
823e6fa
Rentention policy (#657)
paullizer Jan 26, 2026
1c1c845
Merge branch 'Staging' into Development
paullizer Jan 26, 2026
31e8341
Added ServiceNow support for create and publish article. Including r…
Jan 27, 2026
c70db6b
Replace actual servicenow instance name with generic name in the read…
Jan 27, 2026
fa72a65
Merge remote-tracking branch 'upstream/Development' into servicenow-i…
Jan 27, 2026
0ed07b1
Changed version number in ServiceNow readme files to 0.237.005 since …
Jan 27, 2026
61d8a8b
Enhance ServiceNow agent for managing new KB article creation
Jan 28, 2026
715bb6b
Added readme and open ai specs and agent instructions to support Serv…
Jan 28, 2026
b5804ad
Remove any references to actual ServiceNow instances
Jan 28, 2026
6c4b14e
Merge upstream/Development into ai-search-test-connection-fix
Jan 28, 2026
7ace8b7
Merge pull request #641 from vivche/ai-search-test-connection-fix
Bionic711 Jan 29, 2026
05a14e4
fixed retention policy runtime bug and sidebar bug (#672)
paullizer Jan 30, 2026
5cd0f3b
Merge branch 'Staging' into Development
paullizer Jan 30, 2026
0e0c437
Fix: Windows Unicode encoding issue for video uploads (#662)
vivche Jan 30, 2026
ab456a4
Update docs/how-to/azure_speech_managed_identity_manul_setup.md (#675)
paullizer Jan 30, 2026
534eb72
Add custom subdomain support for OpenAI and Speech Service in Terrafo…
vivche Jan 30, 2026
251b949
0.237.006 (#676)
paullizer Jan 30, 2026
cd09c7a
docs: Update release notes for ServiceNow integration and bug fixes
Jan 30, 2026
634040d
Update release_notes.md
paullizer Jan 30, 2026
944b581
Merge branch 'Staging' into Development
paullizer Jan 30, 2026
39e812c
resolve conflict
Jan 30, 2026
0da710a
fixed sidebar race condition (#679)
paullizer Jan 30, 2026
1e4b524
Merge branch 'Staging' into Development
paullizer Jan 30, 2026
fd66132
Merge branch 'Development' into servicenow-integration, and moved fix…
Jan 31, 2026
0c161ae
fix the version number in config.py
Jan 31, 2026
bf90baf
Security: Restrict group agent loading to active group only
Jan 31, 2026
8a9ad98
Fixed an instruction error that caused semantic kernel to fall back t…
Jan 31, 2026
28a557e
Merge pull request #640 from vivche/servicenow-integration
Bionic711 Jan 31, 2026
82f8a89
Fixed! The issue was caused by duplicated code blocks (#683)
paullizer Feb 3, 2026
4c24cc8
Manage group frontend bug (#684)
paullizer Feb 3, 2026
b66bee9
initial feature add
paullizer Feb 4, 2026
ef5f468
added tag endpoint
paullizer Feb 4, 2026
af15c05
return unused tags too
paullizer Feb 4, 2026
ef14203
Bicepfix (#690)
eldong Feb 5, 2026
296d987
working on ui
paullizer Feb 5, 2026
a4a4224
Search bug fix 20260229 (#697)
paullizer Feb 9, 2026
541dd60
Overhauled and updated file extension definition & MAG audio file tra…
Xeelee33 Feb 9, 2026
7c2eb0c
Update release_notes.md (#698)
paullizer Feb 9, 2026
e102efe
Merge branch 'Staging' into Development
paullizer Feb 9, 2026
2429489
removed duplicate code causing bugs (#701)
paullizer Feb 9, 2026
b529d60
Chat file upload error (#709)
paullizer Feb 11, 2026
0cd14b9
Merge branch 'Staging' into Development
paullizer Feb 11, 2026
7381359
edit folders
paullizer Feb 18, 2026
66f9287
sorting fixed
paullizer Feb 18, 2026
654739a
chat with working with personal
paullizer Feb 19, 2026
3daf815
tagging added to groups and public workspaces
paullizer Feb 20, 2026
e317139
added tags to group and public workspace
paullizer Feb 22, 2026
6d9e6b0
fixed tags in group and public workspaces
paullizer Feb 23, 2026
978ca4f
Update .gitignore
paullizer Feb 23, 2026
de3a523
fixed citation bug
paullizer Feb 23, 2026
4befb2c
cleaned up workspaces
paullizer Feb 23, 2026
47d07da
Bugfix/globalagentscreation (#720)
Bionic711 Feb 23, 2026
f36f990
Add Dockerfile and update devcontainer configuration for Python envir…
SteveCInVA Feb 23, 2026
dc746a4
extended document dropdown width
paullizer Feb 23, 2026
b256a07
Update chat-documents.js
paullizer Feb 23, 2026
b74c077
Create CLAUDE.md
paullizer Feb 23, 2026
8168bb1
added features and updated release notes
paullizer Feb 23, 2026
59e8297
Added ability for admin to disable/enable workspace lock
paullizer Feb 23, 2026
deae525
Merge branch 'Development' into workspace-folders
paullizer Feb 23, 2026
e0da096
Add tags to blob metadata when enhanced citations is enabled
paullizer Feb 23, 2026
edcce6d
Merge branch 'workspace-folders' of https://github.com/microsoft/simp…
paullizer Feb 23, 2026
f78e8a5
Fix/agent action 500 error (#731)
paullizer Feb 23, 2026
b92ec5a
Update release_notes.md
paullizer Feb 23, 2026
a924a30
Merge branch 'workspace-folders' into Development
paullizer Feb 23, 2026
a334377
fixed active workspace bug for users switching public workspaces
paullizer Feb 24, 2026
3100d85
optional only allow owner to create/edit/delete group agents and actions
paullizer Feb 24, 2026
d3667b2
Merge pull request #736 from microsoft/feature/owner-required-to-crea…
Bionic711 Feb 24, 2026
9e29f22
Added retention policy UI for groups and public workspaces (#730)
eldong Feb 24, 2026
ac64920
fix_scroll - Added overflow: auto to message-content css class to all…
chadpalmer Feb 25, 2026
0ea45c2
fixed showToast
paullizer Feb 25, 2026
0bd9f12
Hardened `get_user_settings()` to normalize malformed or missing `set…
paullizer Feb 26, 2026
fc501be
Update docker customization for CA and pip
clarked-msft Feb 27, 2026
eac2ad6
Update release notes
clarked-msft Feb 27, 2026
64a3ab9
Revert changes to older release notes...
clarked-msft Feb 27, 2026
79670ed
Apply suggestions from code review
clarked-msft Feb 27, 2026
df8964f
fixed potential sql injection with new tags feature
paullizer Mar 2, 2026
941a4d2
Merge pull request #751 from microsoft/fix/tag-sql-injection
Bionic711 Mar 2, 2026
f10997d
Merge branch 'Development' into fix-harden-get-user-settings
Bionic711 Mar 2, 2026
3d7e8d4
Merge pull request #744 from microsoft/fix-harden-get-user-settings
Bionic711 Mar 2, 2026
3acf5c2
Merge branch 'Development' into fix-public-workspace-active-bug
Bionic711 Mar 2, 2026
834bfc4
Apply suggestion from @Copilot
paullizer Mar 2, 2026
ca93510
fix js location
paullizer Mar 2, 2026
d3fcf85
Merge branch 'fix-public-workspace-active-bug' of https://github.com/…
paullizer Mar 2, 2026
433a7c3
update wrapper (#741)
Bionic711 Mar 2, 2026
b64c9e8
Merge pull request #735 from microsoft/fix-public-workspace-active-bug
Bionic711 Mar 2, 2026
271a338
Merge branch 'Staging' into Development
nadoylemsft Mar 2, 2026
f7e1e41
Added ability to export conversations & set retention policies (#734)
eldong Mar 3, 2026
12a88ca
Merge branch 'Staging' into Development
paullizer Mar 3, 2026
a05ce52
moved retention to manage pages (#755)
paullizer Mar 3, 2026
7e7ece8
fixed bug causing js error (#759)
paullizer Mar 3, 2026
355cef7
fixed workspace scope unlock bug (#760)
paullizer Mar 3, 2026
079f8e4
Merge branch 'Staging' into Development
paullizer Mar 3, 2026
fdaa3f1
Staging (#762)
paullizer Mar 3, 2026
d31afe0
feedback-user-timeout - Added user idle timeout feature that auto log…
chadpalmer Mar 4, 2026
7430b13
Merge branch 'Development' into docker-customization
clarked-msft Mar 5, 2026
fa96a44
Update docker custimization doc
clarked-msft Mar 5, 2026
22dae79
Add future release version to release notes
clarked-msft Mar 5, 2026
dcde439
upd for cross-cloud calls and unification of OIDC endpoints/calls (#771)
Bionic711 Mar 5, 2026
b1b2a82
feedback-user-timeout - fixed merge conflict with microsoft update.
chadpalmer Mar 5, 2026
f216d68
Merge branch 'Development' into feedback-user-timeout
chadpalmer Mar 5, 2026
765a847
feedback-user-timeout - Moved new settings variables to app admin set…
chadpalmer Mar 5, 2026
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
b8c62a1
feedback-user-timeout - Cleaned up code as per some of copilot's sugg…
chadpalmer 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
8f692f9
feedback-user-timeout - Added admin settings toggle to allow turning …
chadpalmer Mar 6, 2026
8be4f31
added export pdf and conversation summary
paullizer Mar 9, 2026
3443ad0
Redis key vault auth and 3 bug fixes (#767)
Xeelee33 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
36649c9
Merge branch 'Development' into docker-customization
clarked-msft Mar 10, 2026
3d346ea
Merge pull request #747 from clarked-msft/docker-customization
Bionic711 Mar 10, 2026
7fd6a0a
feedback-user-timeout - Added logging and method comments.
chadpalmer Mar 10, 2026
9315739
feedback-user-timeout - Merge latest updates and fix merge conflicts.
chadpalmer Mar 11, 2026
0519999
feedback-user-timeout - Updated/cleaned up release notes and added mi…
chadpalmer Mar 11, 2026
6431de2
feedback-user-timeout - More code clean up for safe_int method and cs…
chadpalmer Mar 11, 2026
8ea5b81
feedback-user-timeout - More code clean up for unit tests and making …
chadpalmer Mar 12, 2026
7c1b464
Feature/admin configurable access denied message (#772)
vivche Mar 12, 2026
aee0a6c
Bicep support for airgap (#792)
clarked-msft Mar 12, 2026
4b869f2
feedback-user-timeout - Added missing utils file to repo.
chadpalmer Mar 12, 2026
1be8338
feedback-user-timeout - Made api call's interaction with idle timeout…
chadpalmer Mar 12, 2026
dce26d7
feedback-user-timeout - Adjusted idle timeout initialization to accou…
chadpalmer Mar 12, 2026
1de1b06
feedback-user-timeout - Adjusted idle heartbeat reauth handling.
chadpalmer Mar 12, 2026
567d661
feedback-user-timeout - Moved fixes documentation into v0.239.006 fol…
chadpalmer Mar 12, 2026
55f539b
updates to tabular processing
paullizer Mar 12, 2026
8b3a712
improved tool calling and thought tracking
paullizer Mar 13, 2026
fe46c15
Add per-message export feature for Markdown and Word formats (#783)
eldong Mar 13, 2026
71ca9dd
resolved bug fixes
paullizer Mar 13, 2026
4eddb1d
removed test files
paullizer Mar 13, 2026
fa9b24c
feedback-user-timeout - Merged latest updates from microsoft simplech…
chadpalmer Mar 13, 2026
c87df0a
feedback-user-timeout - Updated doc folder name to match new update v…
chadpalmer Mar 13, 2026
1b81680
multi-tab excel support
paullizer Mar 13, 2026
59969ab
fix agent creation bug
paullizer Mar 13, 2026
8daeecc
trigger cla check
chadpalmer Mar 13, 2026
d034247
added tag view to document lists in groups and public workspaces
paullizer Mar 16, 2026
a5a95f4
feedback-user-timeout - Updated default idle enabled values to false,…
chadpalmer 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
296fa93
feedback-user-timeout - Addressed issues flagged by github copilot.
chadpalmer Mar 17, 2026
4045e55
feedback-user-timeout - Addressed more issues flagged by github copilot.
chadpalmer 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
f3a63f8
feedback-user-timeout - Addressed even more issues flagged by github …
chadpalmer 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
57b117f
feedback-user-timeout - Addressed yet more issues flagged by github c…
chadpalmer Mar 18, 2026
b1aa8f3
feedback-user-timeout - Addressed another round of issues flagged by …
chadpalmer Mar 18, 2026
3f2b8e8
feedback-user-timeout - Updated docs and added docstring.
chadpalmer Mar 18, 2026
8df1620
feedback-user-timeout - Toned down potential log entries.
chadpalmer Mar 18, 2026
54e37c8
made streaming primary
paullizer Mar 19, 2026
41fba50
significant performance improvement and chat notifications
paullizer Mar 20, 2026
e7d2020
fixed code quality checks
paullizer Mar 23, 2026
19c20bf
cleaned up streaming buttons, its only option now
paullizer Mar 23, 2026
681f561
moved reasoning and voice response to the right
paullizer Mar 23, 2026
1616130
removed openapi validate and use swagger from an url, now only suppor…
paullizer Mar 23, 2026
935e9ea
exit if using this config
paullizer Mar 23, 2026
6faea2c
public_workspace.js fix
paullizer Mar 23, 2026
fb5468d
Removed the duplicated refreshGroups property from GroupManager, so t…
paullizer Mar 23, 2026
f32d5fd
fixed debug_print support
paullizer Mar 23, 2026
0f145bd
resolved redundant assignment
paullizer Mar 23, 2026
8721b37
resolved python syntax error
paullizer Mar 23, 2026
7266f3e
fixed unreachable
paullizer Mar 23, 2026
579b552
Merge pull request #782 from microsoft/Thought-and-fixes
Bionic711 Mar 23, 2026
e7881ba
Merge branch 'Staging' into fix/release_notes-merge_fix-20260323
paullizer Mar 23, 2026
4abee3c
Merge branch 'main' into fix/release_notes-merge_fix-20260323
paullizer Mar 23, 2026
0ab5772
Update release_notes.md
paullizer Mar 23, 2026
5ff07e7
Update release_notes.md
paullizer Mar 23, 2026
81a863c
Merge pull request #808 from microsoft/fix/release_notes-merge_fix-20…
Bionic711 Mar 23, 2026
ea6a341
Merge branch 'Development' into feedback-user-timeout
chadpalmer Mar 24, 2026
2b63923
feedback-user-timeout - Added custom message field, enforce min 10 mi…
chadpalmer Mar 24, 2026
e178c24
feedback-user-timeout - Updated/fixed issues flagged by github copilot.
chadpalmer Mar 24, 2026
79d3e18
feedback-user-timeout - Added doc files in new folder.
chadpalmer Mar 24, 2026
85be8a7
Feature/aifoundryagents (#812)
Bionic711 Mar 31, 2026
39343c3
Deployment updates (#815)
paullizer Mar 31, 2026
24c79c8
Feature/chattutorial (#816)
paullizer Mar 31, 2026
3209cb8
Fixed auto-delete of custom logo images issue.
chadpalmer Apr 1, 2026
5d465ff
feedback-user-timeout - Fixed merge conflict.
chadpalmer Apr 1, 2026
1cc8ff7
feedback-user-timeout - Fixed several code issues from merge and dele…
chadpalmer Apr 1, 2026
e269b51
feedback-user-timeout - Added missing logo images.
chadpalmer Apr 1, 2026
0527e8d
Merge pull request #800 from Xeelee33/feedback-user-timeout
Bionic711 Apr 1, 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
  •  
  •  
  •  
23 changes: 23 additions & 0 deletions .github/instructions/html-lang.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
applyTo: '**/*.html'
---

# HTML Language Guide

- Use 4 spaces per indentation level. No tabs.

- Use double quotes for all HTML attributes. Ex: `<div class="my-class">`

- Self-closing tags should include the trailing slash. Ex: `<img src="image.png" />`

- Use semantic HTML5 elements where appropriate. Ex: `<header>`, `<nav>`, `<main>`, `<footer>`

- Include ARIA roles and attributes to enhance accessibility. Ex: `role="button"`, `aria-label="Close"`

- Keep inline styles to a minimum; prefer CSS classes for styling.

- Use comments to separate major sections of the HTML document. Ex: `<!-- Header Section -->`

- Use Jinja templating syntax consistently for dynamic content, settings, and configuration. Ex: `{{ variable }}`, `{% if condition %}`

- Use bootstrap classes for layout, styling consistency, and data presentation. Ex: `class="container"`, `class="row"`, `class="col-md-6"`, `data-bs-toggle="modal"`
4 changes: 3 additions & 1 deletion .github/instructions/javascript-lang.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ applyTo: '**/*.js'

- Do not use display:none. Instead add and remove the d-none class when hiding or showing elements.

- Prefer inline html notifications or toast messages using Bootstrap alert classes over browser alert() calls.
- Prefer inline html notifications or toast messages using Bootstrap alert classes over browser alert() calls.

- Use bootstrap modals for confirmation dialogs instead of native browser confirm() calls.
31 changes: 28 additions & 3 deletions .github/instructions/python-lang.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,37 @@ applyTo: '**/*.py'

# Python Language Guide

- Files should start with a comment of the file name. Ex: `# functions_personal_agents.py`
- All files MUST start with a comment of the file name. Ex: `# functions_personal_agents.py`

- Imports should be grouped at the top of the document after the module docstring, unless otherwise indicated by the user or for performance reasons in which case the import should be as close as possible to the usage with a documented note as to why the import is not at the top of the file.
## Rule: Follow Standard Python Conventions

- Standard python conventions, such as the use of snake case, must be followed.

## Rule: Imports Must Be Organized and at the Top of the File !IMPORTANT

- IMPORTANT: `from` and `import` statements MUST be grouped at the top of the document after the module docstring, unless otherwise indicated by the code writer or for performance reasons in which case the import should be as close as possible to the usage with a comment explaining why the import is not at the top of the file. CodeQL hammers us on this in the findings. If you find imports that are not at the top of the file, move them to the top and add a comment if there is a reason they cannot be moved. This also helps prevent multuple imports of the same module in different places which can lead to confusion and maintenance issues.

## Rule: Indentation, Logging, and Decorators
- Use 4 spaces per indentation level. No tabs.

- Code and definitions should occur after the imports block.

- Prefer log_event from functions_appinsights.py for logging activites.
- All logging should used tag based prefixes. Ex: [GPTClient] or [SKLoader] to identify the source of the log message and make it easier to trace. Tags should be enclosed in square brackets. Tags should be generalized to the operation that is occurring. Any existins logging that is missing tags should have tags added.

- Always import `log_event` from `functions_appinsights.py` for any logging activities.

- All files MUST use the `log_event` function from `functions_appinsights.py` for production-type logging activities. Ensure that all log events include relevant contextual information as properties to facilitate effective monitoring and troubleshooting. Messages returned to the client should not contain sensitive information, but should be informative enough to understand the context of the event.

- Prefer using `log_event` from functions_appinsights.py for production-type logging activites.

- Use `log_event` from functions_appinsights.py with debug_only=True for debug logging purposes. All method, calls, warnings and errors should be debug_logged.

- Files with routes MUST import `from swagger_wrapper import swagger_route, get_auth_security` and use the `@swagger_route(security=get_auth_security())` decorator for all route functions.

- When editing group workspace content, always use the `assert_group_role(user_id, group_id, allowed_roles=("Owner", "Admin", "DocumentManager", "User"))` function to verify the user's current membership and role in the group before allowing access to group-scoped resources or operations. This ensures that users cannot access or modify group content based solely on a potentially stale or tampered `activeGroupOid` reference. Roles should vary based on the level of access required for the operation, but should always include "Owner" and "Admin" as allowed roles.

- Unless otherwise indicated, all routes MUST include `@login_required` decorator.

- Always use f-strings for string interpolation. Ex: `f"User ID: {user_id}"` instead of `"User ID: {}".format(user_id)"`

- Never use `except:` without specifying the exception type. Always catch specific exceptions or use `except Exception as ex:` to capture the exception details. This also avoids accidentally catching system-exiting exceptions like `KeyboardInterrupt` or `SystemExit`.
158 changes: 158 additions & 0 deletions .github/instructions/ui_tests.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
---
applyTo: '**/*.html, **/*.js, **/*.css'
---

# UI Tests

- Always create or update Azure Playwright UI tests when changing HTML, CSS, or JavaScript that affects rendering, user interaction, layout, client-side state, or browser workflows. Leverage the `azure-mgmt-playwright` Python library.

## Location

- Store all UI tests in the `ui_tests/` folder at the root of the project.
- Keep reusable helpers, fixtures, authentication utilities, and page models inside `ui_tests/` so UI automation stays separate from `functional_tests/`.
- Place screenshots, traces, and other test artifacts under a dedicated subfolder such as `ui_tests/artifacts/`.

## When UI Tests Are Required

### Always create or update UI tests for:
- New pages, views, or templates.
- HTML changes that affect structure, accessibility, forms, navigation, or conditional rendering.
- CSS changes that affect layout, spacing, responsive behavior, visibility, theming, or visual regressions.
- JavaScript changes that affect event handlers, DOM updates, modals, tabs, filtering, validation, async loading, or error handling.
- Bug fixes involving display logic, user flows, or browser-side regressions.
- Features that require proof that the browser experience works end to end.

### Focus areas for coverage:
- Rendering: page content, empty states, conditional sections, and accessibility attributes.
- Interaction: clicks, typing, keyboard navigation, dialogs, dropdowns, and form submission.
- Styling and layout: visible states, responsive breakpoints, overflow issues, and Bootstrap-driven behavior.
- JavaScript behavior: dynamic updates, loading indicators, validation messages, and error states.

## Required Technology

- Use Azure Playwright for UI automation.
- Use the `azure-mgmt-playwright` Python package when provisioning or connecting to Azure Playwright resources.
- Use `DefaultAzureCredential` for authentication. Never hardcode credentials, API keys, or secrets in UI tests.
- Write UI tests in Python unless the user explicitly requests another language.

## Naming Conventions

### File naming:
- Use `test_{page_or_feature}_{scenario}.py` for executable UI tests.
- Use descriptive names tied to the user-visible workflow being validated.

### Examples:
- `test_chat_sidebar_navigation.py`
- `test_workspace_document_filters.py`
- `test_group_workspace_modal_validation.py`
- `test_public_workspace_responsive_layout.py`

## Suggested Directory Structure

```text
ui_tests/
test_chat_sidebar_navigation.py
test_workspace_document_filters.py
conftest.py
auth_helpers.py
page_models/
fixtures/
artifacts/
```

## Test Design Requirements

- Keep each test independent and runnable on its own.
- Cover the complete browser workflow: navigation, setup, action, validation, and cleanup when needed.
- Validate both expected success paths and visible failure states.
- Prefer stable selectors such as `id`, `name`, `data-testid`, ARIA roles, labels, and text that is intentionally user-facing.
- Avoid brittle selectors based on deeply nested CSS paths or Bootstrap implementation details.
- If a UI change is responsive, validate at least desktop and mobile viewport behavior.
- If a change is accessibility-sensitive, validate visible labels, roles, focus movement, and keyboard behavior where practical.

## Python UI Test Template

```python
# test_chat_sidebar_navigation.py
"""
UI test for chat sidebar navigation.

Version: [current version from config.py when applicable]
Implemented in: [version when fix or feature was added]

This test ensures that the sidebar navigation renders correctly,
supports keyboard and mouse interaction, and updates the visible
chat panel without browser errors.
"""

from pathlib import Path

import pytest
from playwright.sync_api import expect


@pytest.mark.ui
def test_chat_sidebar_navigation(page):
"""Validate that users can navigate between sidebar destinations."""
page.goto("http://127.0.0.1:5000")
page.get_by_role("button", name="Open navigation").click()
page.get_by_role("link", name="Workspaces").click()

expect(page.get_by_role("heading", name="Workspaces")).to_be_visible()
expect(page.get_by_text("Recent documents")).to_be_visible()
```

## Authentication and Environment Rules

- Authenticate Azure dependencies with `DefaultAzureCredential`.
- Read environment-specific values such as base URLs, tenant-specific settings, or test accounts from environment variables or secure configuration.
- Never commit secrets, session tokens, storage keys, or passwords.
- If a test requires signed-in state, create a reusable login helper in `ui_tests/` rather than duplicating login steps across files.

## What to Validate in UI Tests

### HTML changes:
- Key headings, landmarks, labels, buttons, links, and form elements render correctly.
- Conditional content appears or stays hidden at the right time.
- Accessibility-related attributes remain intact.

### CSS changes:
- Elements are visible when expected and hidden only when intended.
- Layout behaves correctly at the supported viewport sizes.
- Important visual states such as error, loading, selected, disabled, and hover-adjacent states are testable.

### JavaScript changes:
- Event handlers trigger the correct visible behavior.
- DOM updates complete after async actions.
- Validation, toast messages, modals, drawers, and loading indicators behave correctly.
- Browser console errors should be treated as failures when they are caused by the changed workflow.

## Reuse and Maintainability

- Extract repeated UI actions into helper functions or page model classes.
- Keep assertions close to the action they validate so failures are easy to diagnose.
- Use concise setup utilities for viewport, authentication, seeded test data, and navigation.
- Prefer a small number of focused tests over one large brittle end-to-end script.

## Execution Patterns

### Typical workflow:
- Start the local app or target environment.
- Run only the relevant UI test file while iterating.
- Run the broader affected UI suite before completing the change.

### Example commands:
```bash
cd ui_tests
pytest test_chat_sidebar_navigation.py
pytest -m ui
```

## Best Practices

- Write UI tests as part of the same change that updates the HTML, CSS, or JavaScript.
- Keep test names and docstrings explicit about the user behavior being validated.
- Capture screenshots or traces for failures when the workflow is difficult to diagnose.
- Avoid sleeping for fixed durations; wait for meaningful UI conditions instead.
- Verify user-visible outcomes, not just implementation details.
- If a bug fix changes browser behavior, add a regression UI test that fails without the fix.
2 changes: 1 addition & 1 deletion .github/workflows/release-notes-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:

- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v44
uses: tj-actions/changed-files@v46.0.1
with:
files_yaml: |
code:
Expand Down
50 changes: 50 additions & 0 deletions .github/workflows/swagger-route-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Swagger Route Check

on:
pull_request:
branches:
- main
- Development
- staging
paths:
- 'application/single_app/**/*.py'
- 'scripts/check_swagger_routes.py'
- '.github/workflows/swagger-route-check.yml'

jobs:
swagger-route-check:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Get changed Python files
id: changed-files
uses: tj-actions/changed-files@v46.0.1
with:
files_yaml: |
route_python:
- 'application/single_app/**/*.py'
- 'scripts/check_swagger_routes.py'

- name: Run swagger route validation
env:
CHANGED_ROUTE_FILES: ${{ steps.changed-files.outputs.route_python_all_changed_files }}
run: |
if [[ -z "$CHANGED_ROUTE_FILES" ]]; then
echo "No changed application Python files detected."
exit 0
fi

echo "Changed Python files:"
printf '%s\n' "$CHANGED_ROUTE_FILES" | tr ' ' '\n'

python scripts/check_swagger_routes.py $CHANGED_ROUTE_FILES
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,8 @@ flask_session
tmp**cwd
/tmp_images
nul
/.github/plans
*.xlsx
/artifacts/tests
scripts/agent.json
scripts/me.json
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
Loading
Loading