Bugfix/241.006#885
Merged
paullizer merged 6 commits intoDevelopmentfrom May 7, 2026
Merged
Conversation
support added for small portrait screens covers personal/group workspaces, chat, profile, notifications
# Conflicts: # application/single_app/config.py # application/single_app/functions_activity_logging.py # application/single_app/semantic_kernel_loader.py # application/single_app/static/js/chat/chat-toast.js # application/single_app/static/js/control-center.js
Contributor
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR appears to deliver a bundle of UI and backend bugfixes plus regression coverage across chat navigation/toolbar behavior, workspace responsive layouts, Control Center activity logs, enhanced citations PDF handling, and external healthcheck settings (closing #867 and #813).
Changes:
- Added multiple Playwright UI tests to cover workspace navigation/cards, chat drawers/toolbars, enhanced citations toasts, and Control Center activity logs.
- Introduced/updated frontend UI logic for chat navigation/tooling, toast anchoring, workspace section switching, and sidebar behaviors.
- Added backend/admin wiring for an unauthenticated external healthcheck route and hardened activity log behavior, along with functional “source contract” tests and documentation.
Reviewed changes
Copilot reviewed 96 out of 97 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| ui_tests/test_workspace_sidebar_endpoint_links.py | New UI regression for workspace sidebar endpoint links and tab rounding. |
| ui_tests/test_workspace_mobile_navigation_layout.py | New UI regression for mobile workspace drawer/switcher behavior. |
| ui_tests/test_workspace_document_cards_layout.py | New UI regression covering workspace document card view. |
| ui_tests/test_profile_fact_memory_editor.py | Extends profile UI test to validate stacked delete modal behavior and TTS button visibility contract. |
| ui_tests/test_enhanced_citations_pdf_error_toast.py | New UI regression ensuring enhanced-citations PDF errors surface via toast and toast stays below tutorial launcher. |
| ui_tests/test_control_center_activity_logs_layout_presets.py | New UI regression validating Activity Logs layout presets and localStorage persistence. |
| ui_tests/test_control_center_activity_logs_layout.py | New UI regression validating Activity Logs responsive table + export wiring + modal behavior. |
| ui_tests/test_chat_sidebar_toggle_controls.py | New UI regression for unified chat navigation shell behavior on desktop/mobile. |
| ui_tests/test_chat_search_panel_mobile_drawer.py | New UI regression for grounded-search mobile drawer open/close behavior. |
| ui_tests/test_chat_mobile_toolbar_compaction.py | New UI regression for compact mobile chat toolbar tools drawer and grounded search close flow. |
| functional_tests/test_unified_logging_entrypoint.py | Extends functional test coverage for debug_print forwarding tagged traces to App Insights. |
| functional_tests/test_no_auth_external_healthcheck_admin_setting.py | New functional test verifying admin wiring for unauthenticated healthcheck setting/template. |
| functional_tests/test_local_agent_cognitive_services_scope.py | New functional test ensuring local agents use config-backed cognitive services scope resolution. |
| functional_tests/test_group_agent_endpoint_scope_resolution.py | Updates functional test to validate group agent endpoint scope resolution documentation and wiring. |
| functional_tests/test_foundry_endpoint_resolution.py | Refactors functional test to assert Foundry endpoint resolution logic via source inspection. |
| functional_tests/test_enhanced_citations_pdf_error_logging_fix.py | New functional test asserting enhanced citations PDF dependency/logging fixes plus version/doc alignment. |
| functional_tests/test_enhanced_citations_csp_fix.py | Updates functional test to cover blob CSP framing + chat toast anchoring logic. |
| functional_tests/test_default_model_selection_fallback.py | Updates functional test metadata and removes config version assertion. |
| functional_tests/test_control_center_activity_logs_layout_presets.py | New functional checks for Activity Logs preset markup/JS wiring and version bump. |
| functional_tests/test_control_center_activity_logs_hardening.py | New functional checks for backend hardening + export endpoint + template hooks + version bump. |
| functional_tests/test_chat_toolbar_layout.py | Updates functional test to assert compact toolbar markup/CSS/JS wiring. |
| functional_tests/test_chat_navigation_unified_shell.py | New functional checks validating unified chat rail, overlay coordination, and version bump. |
| functional_tests/test_admin_action_activity_log.py | Updates functional test to assert admin action user_id normalization and route wiring. |
| functional_tests/storage_state.json | Adds an empty JSON storage_state fixture file. |
| docs/explanation/fixes/v0.241.031/CHAT_TAGS_LOADING_STATE_FIX.md | Adds fix documentation for chat tags loading-state UX. |
| docs/explanation/fixes/v0.241.030/CHAT_SEARCH_DRAWER_CLOSE_FIX.md | Adds fix documentation for grounded-search drawer close ownership. |
| docs/explanation/fixes/v0.241.029/CHAT_FLOATING_SEARCH_DROPDOWN_FIX.md | Adds fix documentation for viewport-safe dropdown positioning. |
| docs/explanation/fixes/v0.241.028/CHAT_MODEL_AGENT_SHARED_PRIMARY_SELECTOR_FIX.md | Adds fix documentation for shared primary selector hierarchy. |
| docs/explanation/fixes/v0.241.027/CHAT_MOBILE_SELECTOR_OWNERSHIP_AND_LABEL_VISIBILITY_FIX.md | Adds fix documentation for mobile selector ownership + label visibility. |
| docs/explanation/fixes/v0.241.026/CHAT_MOBILE_TOOLBAR_LABEL_VISIBILITY_FIX.md | Adds fix documentation for mobile toolbar labels. |
| docs/explanation/fixes/v0.241.025/CHAT_MOBILE_TOOLBAR_SELECTOR_REVEAL_AND_CLOSE_FIX.md | Adds fix documentation for selector reveal and close error avoidance. |
| docs/explanation/fixes/v0.241.024/CHAT_TOOLBAR_DESKTOP_MOBILE_PARITY_FIX.md | Adds fix documentation for desktop/mobile toolbar parity. |
| docs/explanation/fixes/v0.241.023/CHAT_SHELL_MOBILE_DRAWER_AND_TOOLS_SHEET_FIX.md | Adds fix documentation for chat shell mobile drawer/tools sheet fixes. |
| docs/explanation/fixes/v0.241.022/CHAT_NAVIGATION_AND_GROUNDED_SEARCH_DRAWER_FIX.md | Adds fix documentation for chat navigation and grounded-search drawer. |
| docs/explanation/fixes/v0.241.019/CHAT_MOBILE_TOOLBAR_COMPACTION_FIX.md | Adds fix documentation for compact mobile chat toolbar. |
| docs/explanation/fixes/v0.241.018/CHAT_NAVIGATION_UNIFICATION_FIX.md | Adds fix documentation for unified chat navigation shell. |
| docs/explanation/fixes/v0.241.015/CONTROL_CENTER_ACTIVITY_LOGS_HARDENING_FIX.md | Adds fix documentation for Activity Logs hardening. |
| docs/explanation/fixes/v0.241.014/WORKSPACE_DOCUMENT_CARDS_AND_HEALTHCHECK_SETTINGS_FIX.md | Adds fix documentation spanning workspace cards + healthcheck admin wiring. |
| docs/explanation/fixes/v0.241.013/WORKSPACE_LAYOUT_REFINEMENTS_FIX.md | Adds fix documentation for workspace layout refinements. |
| docs/explanation/fixes/v0.241.012/WORKSPACE_MOBILE_RESPONSIVE_REFRESH_FIX.md | Adds fix documentation for workspace mobile responsive refresh work. |
| docs/explanation/fixes/v0.241.011/CHAT_SIDEBAR_COLLAPSE_CONTROL_FIX.md | Adds fix documentation for chat/sidebar collapse control changes. |
| docs/explanation/fixes/v0.241.010/ENHANCED_CITATIONS_PDF_BLOB_CSP_AND_TOAST_POSITION_FIX.md | Adds fix documentation for blob CSP allowance and chat toast anchoring. |
| docs/explanation/fixes/v0.241.009/ENHANCED_CITATIONS_PDF_ERROR_LOGGING_FIX.md | Adds fix documentation for enhanced citations PDF dependency/logging/modal behavior. |
| docs/explanation/fixes/v0.241.008/PROFILE_FACT_MEMORY_DELETE_MODAL_STACKING_FIX.md | Adds fix documentation for stacked delete modal and TTS visibility changes. |
| docs/explanation/fixes/v0.241.007/LOCAL_AGENT_COGNITIVE_SERVICES_SCOPE_FIX.md | Adds fix documentation for local agent scope resolution. |
| docs/explanation/fixes/ADMIN_ACTIVITY_LOG_USER_ID_FIX.md | Adds fix documentation for normalizing admin activity log user_id. |
| docs/explanation/features/index.md | Updates features index to include Activity Log Layout Presets feature doc. |
| docs/explanation/features/ACTIVITY_LOG_LAYOUT_PRESETS.md | Adds feature documentation for Activity Logs layout presets. |
| application/single_app/templates/workspace.html | Adds responsive workspace CSS/switcher, cards view toggle, and card view container wiring. |
| application/single_app/templates/base.html | Introduces shared nav height variables and chat shell body classes; adjusts sidebar padding rules. |
| application/single_app/templates/admin_settings.html | Adds separate authenticated vs unauthenticated healthcheck controls with warning messaging. |
| application/single_app/templates/_sidebar_nav.html | Updates sidebar header/toggle control markup and adds workspace endpoint links in submenus. |
| application/single_app/static/js/workspace_sidebar_nav.js | Adds syncing of sidebar active tab to Bootstrap tab state and prevents duplicate bindings. |
| application/single_app/static/js/workspace_section_switcher.js | New JS to keep workspace section select in sync with Bootstrap tabs. |
| application/single_app/static/js/workspace/workspace_plugins.js | Switches workspace actions to default to grid view on mobile. |
| application/single_app/static/js/workspace/workspace_agents.js | Switches workspace agents to default to grid view on mobile. |
| application/single_app/static/js/workspace/workspace-tags.js | Adds cards view mode and mobile default for personal workspace document view switching. |
| application/single_app/static/js/workspace/view-utils.js | Extends view toggle helper with mobile defaults and media-query driven sync. |
| application/single_app/static/js/workspace/group_plugins.js | Switches group actions to default to grid view on mobile. |
| application/single_app/static/js/workspace/group_agents.js | Switches group agents to default to grid view on mobile. |
| application/single_app/static/js/sidebar.js | Centralizes sidebar toggle behavior, aria syncing, and chat rail mobile dismissal handling. |
| application/single_app/static/js/navigation.js | Refactors navigation JS to coordinate offcanvas/drawers and dropdowns, excluding chat-rail ownership. |
| application/single_app/static/js/chat/chat-toast.js | Adds preferred/anchored toast containers and dynamic positioning below tutorial launcher. |
| application/single_app/static/js/chat/chat-searchable-select.js | Adds configurable dropdown positioning/options for searchable selects. |
| application/single_app/static/js/chat/chat-prompts.js | Dispatches a mobile selector activation event after prompts load. |
| application/single_app/static/js/chat/chat-onload.js | Uses showSearchDocumentsPanel helper to open grounded search consistently. |
| application/single_app/static/js/chat/chat-model-selector.js | Applies viewport-safe dropdown config to model selector. |
| application/single_app/static/js/chat/chat-mobile-toolbar.js | Adds mobile toolbar tools drawer/offcanvas logic and cross-breakpoint surface relocation. |
| application/single_app/static/js/chat/chat-enhanced-citations.js | Converts PDF modal workflow to fetch-first blob-backed iframe and reuses error parsing helper. |
| application/single_app/static/js/chat/chat-conversation-info-button.js | Switches info button visibility handling to Bootstrap class toggling + aria-hidden. |
| application/single_app/static/js/chat/chat-agents.js | Applies viewport-safe dropdown config and dispatches mobile selector activation event. |
| application/single_app/static/css/sidebar.css | Updates sidebar/chat-rail layout, introduces toggle row styles, floating expand button styling, and shared transitions. |
| application/single_app/static/css/navigation.css | Introduces consistent top-nav height variables and drawer offsets; adds mobile/dark styling improvements. |
| application/single_app/semantic_kernel_loader.py | Uses config-backed cognitive services scope for AOAI token provider rather than hardcoding commercial scope. |
| application/single_app/route_frontend_admin_settings.py | Adds defaults + save handling for unauthenticated healthcheck; fixes admin action logging user_id parameter. |
| application/single_app/route_external_health.py | Adds /external/healthcheckz registration behind a new enable_no_auth_external_healthcheck flag. |
| application/single_app/requirements.txt | Bumps azure-cognitiveservices-speech dependency version. |
| application/single_app/functions_settings.py | Adds enable_no_auth_external_healthcheck default and removes duplicated enable_external_healthcheck entry. |
| application/single_app/functions_appinsights.py | Extends debug_print to forward tagged traces to App Insights while preserving console behavior. |
| application/single_app/functions_activity_logging.py | Normalizes admin user_id values for activity logs via coerce_activity_log_user_id. |
| application/single_app/config.py | Adds CSP frame-src blob allowance for blob-backed enhanced citations PDF previews. |
| application/single_app/app.py | Registers the new unauthenticated external healthcheck route; fixes “External” comment typo. |
| .gitignore | Ignores a GitHub instructions file path. |
Comments suppressed due to low confidence (8)
functional_tests/test_chat_toolbar_layout.py:1
- The JS contract asserted here doesn’t match the newly added
application/single_app/static/js/chat/chat-mobile-toolbar.jsimplementation (which usesbootstrap.Offcanvas, and does not containMutationObserver,bootstrap.Collapse, orsyncMobileToolsPanel). This will cause the functional test to fail even when the implementation is correct; updaterequired_js_snippetsto reflect the offcanvas-based toolbar logic (e.g., Offcanvas initialization and thechat:toolbar-selector-activatedhandler).
functional_tests/test_unified_logging_entrypoint.py:1 original_levelis captured but never restored; thefinallyblock setsazure_monitorlogger toNOTSETunconditionally. This can leak logger configuration into later tests/runs; restoreparent_loggertooriginal_levelin thefinallyblock.
functional_tests/test_unified_logging_entrypoint.py:1original_levelis captured but never restored; thefinallyblock setsazure_monitorlogger toNOTSETunconditionally. This can leak logger configuration into later tests/runs; restoreparent_loggertooriginal_levelin thefinallyblock.
application/single_app/static/js/workspace/view-utils.js:1- As written,
options.mobileDefaultalways overrides the saved preference whenever the mobile media query matches, which makes the persistedstorageKeyineffective on mobile (and prevents users from keeping a non-default choice across reloads). If persistence is desired, applymobileDefaultonly when there is no saved preference; otherwise prefer the user’s saved value.
application/single_app/static/js/workspace/workspace-tags.js:1 currentViewis normalized, but the unnormalizedviewvalue is persisted to localStorage. IfswitchViewis ever called with an unexpected value, the saved preference becomes invalid noise and will never be recognized bygetPreferredWorkspaceView(). PersistcurrentView(the normalized value) instead of the raw argument.
functional_tests/test_group_agent_endpoint_scope_resolution.py:1- The file header is duplicated and the shebang is not the first line, so it won’t work if the script is executed directly. Remove the duplicate header line and move the shebang to the first line (or remove it consistently if these tests aren’t intended to be run as scripts).
functional_tests/test_foundry_endpoint_resolution.py:1 - Same issue as above: duplicated header and the shebang is not the first line, which breaks direct execution semantics. Deduplicate the header and place the shebang on line 1 (or drop it).
functional_tests/test_no_auth_external_healthcheck_admin_setting.py:1 - The shebang is not the first line, so it won’t be honored when executing the file directly. If this file is intended to be runnable as a script, move the shebang to line 1 (or remove it for consistency).
| @@ -1,4 +1,6 @@ | |||
| // chat-conversation-info-button.js | |||
| // chat-conversation-info-button.js | |||
paullizer
approved these changes
May 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #867
Closes #813