Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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: 1 addition & 1 deletion 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.241.006"
VERSION = "0.241.007"

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

Expand Down
4 changes: 2 additions & 2 deletions application/single_app/functions_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -1055,7 +1055,7 @@ def get_user_settings(user_id):
if 'personal_model_endpoints' not in doc['settings']:
doc['settings']['personal_model_endpoints'] = []
if 'showTutorialButtons' not in doc['settings']:
doc['settings']['showTutorialButtons'] = True
doc['settings']['showTutorialButtons'] = False
updated = True

# Try to update email/display_name if missing and available in session
Expand Down Expand Up @@ -1098,7 +1098,7 @@ def get_user_settings(user_id):
display_name = user.get("name")
doc = {"id": user_id, "settings": {}}
doc["settings"]["personal_model_endpoints"] = []
doc["settings"]["showTutorialButtons"] = True
doc["settings"]["showTutorialButtons"] = False
if email:
doc["email"] = email
if display_name:
Expand Down
2 changes: 1 addition & 1 deletion application/single_app/templates/chats.html
Original file line number Diff line number Diff line change
Expand Up @@ -1057,7 +1057,7 @@ <h6 class="modal-title" id="reasoning-slider-modal-label">Reasoning Effort</h6>
</div>
</div>

{% if user_settings.get('settings', {}).get('showTutorialButtons', True) %}
{% if user_settings.get('settings', {}).get('showTutorialButtons', False) %}
<!-- Chat Tutorial Launch Button -->
<div id="chat-tutorial-launch" class="position-fixed top-0 end-0 p-3">
<button
Expand Down
10 changes: 5 additions & 5 deletions application/single_app/templates/profile.html
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ <h5 class="mb-3"><i class="bi bi-person-badge me-2"></i>Account Information</h5>
<div>
<h5 class="mb-2"><i class="bi bi-sliders me-2"></i>Tutorial Preferences</h5>
<p class="text-muted mb-2">Control whether the floating guided tutorial buttons appear on Chat and Personal Workspace for your account.</p>
<p class="small text-muted mb-0">These launchers are shown by default. You can hide them now and turn them back on later from this page.</p>
<p class="small text-muted mb-0">These launchers are hidden by default. You can turn them on here at any time.</p>
</div>
</div>
{% if app_settings.enable_support_menu and app_settings.enable_support_latest_features and app_settings.support_latest_features_has_visible_items %}
Expand All @@ -367,12 +367,12 @@ <h5 class="mb-2"><i class="bi bi-sliders me-2"></i>Tutorial Preferences</h5>
class="form-check-input"
type="checkbox"
id="show-tutorial-buttons-toggle"
{% if user_settings.get('settings', {}).get('showTutorialButtons', True) %}checked{% endif %}
{% if user_settings.get('settings', {}).get('showTutorialButtons', False) %}checked{% endif %}
/>
<label class="form-check-label fw-semibold" for="show-tutorial-buttons-toggle">
Show tutorial buttons on Chat and Personal Workspace
</label>
<small class="d-block text-muted mt-1">Turn this off if you already know the interface and want to remove the floating walkthrough launchers.</small>
<small class="d-block text-muted mt-1">Turn this on if you want floating walkthrough launchers on Chat and Personal Workspace.</small>
</div>
</div>
<div class="col-lg-4 text-lg-end">
Expand Down Expand Up @@ -1532,8 +1532,8 @@ <h5 class="modal-title" id="exportActivityModalLabel">
fetch('/api/user/settings')
.then(response => response.json())
.then(data => {
toggle.checked = data.settings?.showTutorialButtons !== false;
updateTutorialPreferenceStatus('Tutorial launchers are shown by default until you change this setting.');
toggle.checked = data.settings?.showTutorialButtons === true;
updateTutorialPreferenceStatus('Tutorial launchers are hidden by default until you enable this setting.');
})
.catch(error => {
console.error('Error loading tutorial preferences:', error);
Expand Down
2 changes: 1 addition & 1 deletion application/single_app/templates/workspace.html
Original file line number Diff line number Diff line change
Expand Up @@ -1504,7 +1504,7 @@ <h6>Currently Shared With:</h6>
</div>
</div>

{% if user_settings.get('settings', {}).get('showTutorialButtons', True) %}
{% if user_settings.get('settings', {}).get('showTutorialButtons', False) %}
<div id="workspace-tutorial-launch" class="position-fixed top-0 end-0 p-3 is-ready">
<button
id="workspace-tutorial-btn"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The preference is stored as a per-user setting named `showTutorialButtons` insid

### Configuration and Data Flow

- `functions_settings.get_user_settings()` now ensures `showTutorialButtons` exists and defaults to `True`.
- `functions_settings.get_user_settings()` now ensures `showTutorialButtons` exists and defaults to `False`.
- `route_backend_users.py` allows `showTutorialButtons` through the shared `/api/user/settings` update endpoint.
- `profile.html` exposes a dedicated Tutorial Preferences card with a toggle and save action.
- `chats.html` and `workspace.html` only render tutorial launchers when the current user setting is enabled.
Expand Down
12 changes: 11 additions & 1 deletion docs/explanation/release_notes.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
<!-- BEGIN release_notes.md BLOCK -->

This page tracks notable Simple Chat releases and organizes the detailed change log by version. The timeline below provides a quick visual overview of the current release progression through v0.240.002, and the per-version entries continue immediately after it.
This page tracks notable Simple Chat releases and organizes the detailed change log by version. The timeline below provides a quick visual overview of the current release progression through v0.241.007, and the per-version entries continue immediately after it.

For feature-focused and fix-focused drill-downs by version, see [Features by Version](/explanation/features/) and [Fixes by Version](/explanation/fixes/).

### **(v0.241.007)**

#### Bug Fixes

* **Tutorial Visibility Default Preference Persistence**
* Fixed the Profile tutorial preference loader so a missing `showTutorialButtons` value now resolves to hidden (`false`) instead of being interpreted as enabled.
* This prevents the UI from unintentionally treating an unset Cosmos setting as `true` and writing the toggle back as enabled during later saves.
* Updated profile helper text to match the hidden-by-default behavior and refreshed functional coverage markers for the revised default logic.
* (Ref: `profile.html`, `test_user_tutorial_visibility_preference.py`, `application/single_app/config.py`)

### **(v0.241.006)**

#### Bug Fixes
Expand Down
15 changes: 8 additions & 7 deletions functional_tests/test_user_tutorial_visibility_preference.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
# test_user_tutorial_visibility_preference.py
"""
Functional test for user tutorial visibility preference.
Version: 0.241.003
Implemented in: 0.240.068; 0.241.002; 0.241.003
Version: 0.241.007
Implemented in: 0.240.068; 0.241.002; 0.241.003; 0.241.007

This test ensures that guided tutorial launchers remain visible by default,
This test ensures that guided tutorial launchers are hidden by default,
users can manage the preference from the profile page, and the Latest Features
experience points users back to profile settings when they want to hide or
restore tutorial buttons.
Expand Down Expand Up @@ -45,13 +45,13 @@ def test_user_tutorial_visibility_preference() -> bool:
latest_features_content = read_text(LATEST_FEATURES_TEMPLATE_FILE)

required_config_markers = [
'VERSION = "0.241.003"',
'VERSION = "0.241.007"',
]
missing_config = [marker for marker in required_config_markers if marker not in config_content]
assert not missing_config, f"Missing config markers: {missing_config}"

required_settings_markers = [
"doc['settings']['showTutorialButtons'] = True",
"doc['settings']['showTutorialButtons'] = False",
'if \'showTutorialButtons\' not in doc[\'settings\']:',
]
missing_settings = [marker for marker in required_settings_markers if marker not in settings_content]
Expand All @@ -70,14 +70,15 @@ def test_user_tutorial_visibility_preference() -> bool:
'onclick="saveTutorialPreferences()"',
"function loadTutorialPreferences()",
"function saveTutorialPreferences()",
"toggle.checked = data.settings?.showTutorialButtons === true;",
"showTutorialButtons: toggle.checked",
"These launchers are shown by default.",
"These launchers are hidden by default.",
]
missing_profile = [marker for marker in required_profile_markers if marker not in profile_content]
assert not missing_profile, f"Missing profile preference markers: {missing_profile}"

required_template_guards = [
"{% if user_settings.get('settings', {}).get('showTutorialButtons', True) %}",
"{% if user_settings.get('settings', {}).get('showTutorialButtons', False) %}",
'id="chat-tutorial-launch"',
'id="workspace-tutorial-launch"',
]
Expand Down
Loading