Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 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
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
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
634040d
Update release_notes.md
paullizer Jan 30, 2026
944b581
Merge branch 'Staging' into Development
paullizer Jan 30, 2026
0da710a
fixed sidebar race condition (#679)
paullizer Jan 30, 2026
1e4b524
Merge branch 'Staging' into Development
paullizer Jan 30, 2026
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 @@ -88,7 +88,7 @@
EXECUTOR_TYPE = 'thread'
EXECUTOR_MAX_WORKERS = 30
SESSION_TYPE = 'filesystem'
VERSION = "0.237.006"
VERSION = "0.237.007"


SECRET_KEY = os.getenv('SECRET_KEY', 'dev-secret-key-change-in-production')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,21 @@ const sidebarNewChatBtn = document.getElementById("sidebar-new-chat-btn");
let currentActiveConversationId = null;
let sidebarShowHiddenConversations = false; // Track if hidden conversations should be shown in sidebar
let isLoadingSidebarConversations = false; // Prevent concurrent sidebar loads
let pendingSidebarReload = false; // Track if a reload is pending

// Load conversations for the sidebar
export function loadSidebarConversations() {
if (!sidebarConversationsList) return;

// Prevent concurrent loads
// If already loading, mark that we need to reload again after current load finishes
if (isLoadingSidebarConversations) {
console.log('Sidebar load already in progress, skipping...');
console.log('Sidebar load already in progress, marking pending reload...');
pendingSidebarReload = true;
return;
}

isLoadingSidebarConversations = true;
pendingSidebarReload = false; // Clear any pending reload flag
sidebarConversationsList.innerHTML = '<div class="text-center p-2 text-muted small">Loading conversations...</div>';

fetch("/api/get_conversations")
Expand All @@ -29,6 +32,15 @@ export function loadSidebarConversations() {
sidebarConversationsList.innerHTML = "";
if (!data.conversations || data.conversations.length === 0) {
sidebarConversationsList.innerHTML = '<div class="text-center p-2 text-muted small">No conversations yet.</div>';

// Reset loading flag even when no conversations
isLoadingSidebarConversations = false;

// Check for pending reload even when no conversations
if (pendingSidebarReload) {
console.log('Pending reload detected (no conversations), reloading sidebar...');
setTimeout(() => loadSidebarConversations(), 100);
}
return;
}

Expand Down Expand Up @@ -87,11 +99,23 @@ export function loadSidebarConversations() {

// Reset loading flag
isLoadingSidebarConversations = false;

// If a reload was requested while we were loading, reload now
if (pendingSidebarReload) {
console.log('Pending reload detected, reloading sidebar conversations...');
setTimeout(() => loadSidebarConversations(), 100); // Small delay to prevent rapid reloads
}
})
.catch(error => {
console.error("Error loading sidebar conversations:", error);
sidebarConversationsList.innerHTML = `<div class="text-center p-2 text-danger small">Error loading conversations: ${error.error || 'Unknown error'}</div>`;
isLoadingSidebarConversations = false; // Reset flag on error too

// If a reload was requested while we were loading, reload now even after error
if (pendingSidebarReload) {
console.log('Pending reload detected after error, retrying...');
setTimeout(() => loadSidebarConversations(), 500); // Longer delay after error
}
});
}

Expand Down Expand Up @@ -171,8 +195,25 @@ function createSidebarConversationItem(convo) {
titleWrapper.appendChild(badge);
}

// Insert the wrapper before the dropdown
headerRow.insertBefore(titleWrapper, dropdownElement);
// Verify dropdown is still a valid child right before insertion
try {
if (headerRow.contains(dropdownElement) && dropdownElement.parentNode === headerRow) {
// Insert the wrapper before the dropdown
headerRow.insertBefore(titleWrapper, dropdownElement);
} else {
// Fallback: just append to headerRow if dropdown reference is invalid
console.warn('Dropdown element became invalid, appending wrapper instead', { convo: convo.id });
headerRow.appendChild(titleWrapper);
}
} catch (err) {
// Final fallback: append wrapper if insertBefore fails
console.error('Error inserting titleWrapper, using appendChild fallback:', err, { convo: convo.id });
try {
headerRow.appendChild(titleWrapper);
} catch (appendErr) {
console.error('Critical error: Could not append titleWrapper:', appendErr, { convo: convo.id });
}
}
}

// Add double-click editing to title
Expand Down
Loading
Loading