Conversation
…file to manage memories
There was a problem hiding this comment.
Pull request overview
This PR expands “Fact Memory” into a clearer Instructions vs Facts experience across profile management, chat-time recall visibility (thoughts/citations), and admin/user-facing “Latest Features” guidance—while also bundling several related UX + multi-endpoint admin improvements and their corresponding tests/docs.
Changes:
- Introduces typed fact memory (instruction vs fact) with embeddings + CRUD support and makes chat recall more transparent.
- Updates Admin Settings + Support “Latest Features” content (new cards, screenshots, visibility defaults) and adds navigation helpers.
- Removes the obsolete multi-endpoint migration notice UI and adds/updates functional + Playwright UI regression coverage.
Reviewed changes
Copilot reviewed 68 out of 78 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| ui_tests/test_support_menu_sidebar_visibility.py | UI coverage for Support sidebar + latest-features note |
| ui_tests/test_single_app_template_json_bootstrap_render.py | UI coverage for admin Latest Features selectors |
| ui_tests/test_profile_tutorial_visibility_preference.py | UI coverage for tutorial launcher visibility preference |
| ui_tests/test_profile_fact_memory_editor.py | UI coverage for profile Fact Memory modal CRUD |
| ui_tests/test_chat_page_multi_endpoint_notice_render.py | UI coverage ensuring migration notice is absent |
| ui_tests/test_admin_agent_default_model_migration_panel.py | UI coverage for agent default-model migration panel |
| functional_tests/test_user_tutorial_visibility_preference.py | Functional coverage for tutorial visibility preference wiring |
| functional_tests/test_support_menu_user_feature.py | Functional coverage for support menu + feature visibility defaults |
| functional_tests/test_single_app_template_json_bootstrap_safety.py | Functional coverage for JSON bootstrap safety updates |
| functional_tests/test_per_message_export.py | Expands per-message export regression coverage (Word + email) |
| functional_tests/test_fact_memory_streaming_retrieval_fix.py | Functional regression for streaming fact-memory retrieval/visibility |
| functional_tests/test_fact_memory_profile_and_mini_sk.py | Functional regression for typed fact memory + mini-SK support |
| functional_tests/test_default_model_selection_fallback.py | Functional checks for default-model fallback gating |
| functional_tests/test_content_safety_thread_alignment.py | Functional regression for safety-thread alignment behavior |
| functional_tests/test_chat_stream_retry_context_init_fix.py | Functional regression for streaming retry context init |
| functional_tests/test_chat_multi_endpoint_notice_template_fallback.py | Functional regression for notice removal + sanitization behavior |
| functional_tests/test_chat_model_selector_initial_multiendpoint_bootstrap.py | Functional regression for initial model selector bootstrap |
| functional_tests/test_chat_ai_message_min_width_fix.py | Functional regression for AI bubble min-width CSS |
| functional_tests/test_chat_agent_workspace_launch_selection.py | Functional regression for workspace/group “chat with agent” selection |
| functional_tests/test_admin_latest_features_tab.py | Functional regression for Latest Features admin tab structure/assets |
| functional_tests/test_admin_agent_default_model_migration.py | Functional regression for agent default-model migration workflow |
| docs/explanation/release_notes.md | Adds v0.240.085 release note entry |
| docs/explanation/fixes/PER_MESSAGE_WORD_EXPORT_FORMATTING_FIX.md | Fix doc for Word export formatting |
| docs/explanation/fixes/PER_MESSAGE_EMAIL_EXPORT_FORMATTING_AND_SUBJECT_FIX.md | Fix doc for email export formatting/subject |
| docs/explanation/fixes/OBSOLETE_MULTI_ENDPOINT_NOTICE_REMOVAL_FIX.md | Fix doc for removing obsolete migration notice |
| docs/explanation/fixes/FACT_MEMORY_STREAMING_RETRIEVAL_FIX.md | Fix doc for streaming fact-memory recall |
| docs/explanation/fixes/CONTENT_SAFETY_THREAD_ALIGNMENT_FIX.md | Fix doc for safety-thread alignment |
| docs/explanation/fixes/CHAT_STREAM_RETRY_CONTEXT_INIT_FIX.md | Fix doc for streaming retry context init |
| docs/explanation/fixes/CHAT_MODEL_SELECTOR_INITIAL_MULTI_ENDPOINT_BOOTSTRAP_FIX.md | Fix doc for initial model bootstrap |
| docs/explanation/fixes/AI_MESSAGE_MIN_WIDTH_FIX.md | Fix doc for AI bubble min-width |
| docs/explanation/fixes/AGENT_DEFAULT_MODEL_MIGRATION_FALLBACK_FIX.md | Fix doc for agent default-model migration/fallback |
| docs/explanation/fixes/AGENT_CHAT_LAUNCH_SELECTION_FIX.md | Fix doc for agent launch selection |
| docs/explanation/features/USER_TUTORIAL_VISIBILITY_PREFERENCE.md | Feature doc for tutorial visibility preference |
| docs/explanation/features/MESSAGE_EXPORT.md | Updates message export docs (Word + email draft flow) |
| docs/explanation/features/LATEST_FEATURES_ADMIN_TAB.md | Updates admin Latest Features documentation |
| docs/explanation/features/index.md | Adds tutorial visibility preference to feature index |
| docs/explanation/features/FACT_MEMORY_PROFILE_AND_MINI_SK.md | Feature doc for fact memory profile + mini-SK |
| docs/explanation/features/AGENT_DEFAULT_MODEL_REVIEW_MODAL.md | Feature doc for agent review modal workflow |
| application/single_app/templates/workspace.html | Gates workspace tutorial launcher by user preference |
| application/single_app/templates/latest_features.html | Adds guided-tutorial preference note for users |
| application/single_app/templates/chats.html | Removes migration notice; initial model bootstrap; gates tutorial launcher |
| application/single_app/templates/admin_settings.html | Adds Latest Features cards + agent review modal + removes notice bootstrap |
| application/single_app/templates/_sidebar_nav.html | Adds Latest Features submenu items (registration + fact memory) |
| application/single_app/support_menu_config.py | Adds fact memory card + tutorial visibility action + visibility defaults |
| application/single_app/static/js/workspace/workspace_agents.js | Sends richer selected-agent payload when launching chat |
| application/single_app/static/js/workspace/group_agents.js | Sends agent id in group agent chat launch payload |
| application/single_app/static/js/chat/chat-thoughts.js | Adds icon mapping for fact_memory thought step |
| application/single_app/static/js/chat/chat-streaming.js | Finalizes blocked/safety messages with correct sender |
| application/single_app/static/js/chat/chat-onload.js | Removes migration notice UI handling |
| application/single_app/static/js/chat/chat-message-export.js | Switches email export to backend draft endpoint + mailto launch |
| application/single_app/static/js/admin/admin_settings.js | Adds data-open-admin-tab navigation helper + exposes modified-state accessor |
| application/single_app/static/js/admin/admin_model_endpoints.js | Implements agent default-model review + selective migration workflow |
| application/single_app/static/css/chats.css | Adds AI bubble min-width rule |
| application/single_app/semantic_kernel_plugins/fact_memory_plugin.py | Adds memory_type support + update operation |
| application/single_app/semantic_kernel_loader.py | Adds default-model fallback for eligible agents with missing/stale bindings |
| application/single_app/semantic_kernel_fact_memory_store.py | Adds typed memory + embedding fields + update APIs |
| application/single_app/route_frontend_profile.py | Adds profile fact-memory CRUD endpoints + payload helpers |
| application/single_app/route_frontend_chats.py | Adds initial model selection bootstrap + removes notice wiring |
| application/single_app/route_frontend_admin_settings.py | Clears obsolete notice text + disables notice state |
| application/single_app/route_backend_users.py | Allows showTutorialButtons in user settings updates |
| application/single_app/route_backend_agents.py | Adds admin preview/run endpoints for agent default-model migration |
| application/single_app/functions_settings.py | Updates defaults + adds user tutorial preference default + sanitization tweak |
| application/single_app/functions_personal_agents.py | Tracks modifying actor separately for admin-initiated changes |
| application/single_app/functions_agent_payload.py | Adds helpers to reason about default-model eligibility/binding |
| application/single_app/config.py | Bumps VERSION to 0.240.085 |
| 'Multi-endpoint has been enabled and your existing AI endpoint was migrated. ' | ||
| 'Agents using the default connection may need to be updated to select a new model endpoint.' | ||
| ), | ||
| 'message': '', |
There was a problem hiding this comment.
In the default settings dict, the multi_endpoint_migration_notice block has inconsistent indentation for the message key, which looks like an accidental mis-indent and makes the defaults harder to read/maintain. Align message with the other keys in that dict.
| 'message': '', | |
| 'message': '', |
| # test_chat_agent_workspace_launch_selection.py | ||
| #!/usr/bin/env python3 | ||
| """ |
There was a problem hiding this comment.
The shebang (#!/usr/bin/env python3) is on line 2, so executing this file directly will not invoke Python via the shebang. If this test is intended to be runnable as an executable script (consistent with other functional_tests), move the shebang to the first line (or remove it entirely if it’s always run via python ...).
| # test_admin_agent_default_model_migration.py | ||
| #!/usr/bin/env python3 | ||
| """ |
There was a problem hiding this comment.
The shebang (#!/usr/bin/env python3) is on line 2, so executing this file directly will not invoke Python via the shebang. If this test is intended to be runnable as an executable script (consistent with other functional_tests), move the shebang to the first line (or remove it entirely if it’s always run via python ...).
| <div class="latest-feature-thumbnail-card"> | ||
| <img class="latest-feature-thumbnail-image" src="{{ url_for('static', filename='images/features/agent_default_model_review_summary.png') }}" alt="Agent default model review summary screenshot"> | ||
| <div class="latest-feature-thumbnail-body"> | ||
| <div class="latest-feature-thumbnail-title">Review Summary Card</div> |
There was a problem hiding this comment.
New <img> elements are not self-closing. If we’re following the repo’s HTML style guidance, update these to use self-closing syntax (<img ... />) consistently (applies to the new thumbnails in this card).
| <div class="latest-feature-thumbnail-card"> | ||
| <img class="latest-feature-thumbnail-image" src="{{ url_for('static', filename='images/features/facts_memory_view_profile.png') }}" alt="Profile fact memory section screenshot"> | ||
| <div class="latest-feature-thumbnail-body"> |
There was a problem hiding this comment.
New <img> elements are not self-closing. If we’re following the repo’s HTML style guidance, update these to use self-closing syntax (<img ... />) consistently (applies to the new Fact Memory thumbnails).
semantic_kernel_fact_memory_store.py,route_backend_chats.py,route_frontend_profile.py,profile.html,support_menu_config.py,admin_settings.html,latest_features.html, fact memory guidance and latest-features coverage)