diff --git a/static/js/fileHandler.js b/static/js/fileHandler.js
index b5d24d4cf..d59e8d601 100644
--- a/static/js/fileHandler.js
+++ b/static/js/fileHandler.js
@@ -183,6 +183,10 @@ export async function uploadPending() {
}
const data = await res.json();
uploaded = (data.files || []);
+ if (uploaded.some(x => x && x.gallery_id)) {
+ try { localStorage.setItem('gallery-fresh-chat-upload', String(Date.now())); } catch (_) {}
+ window.dispatchEvent(new CustomEvent('gallery-refresh', { detail: { source: 'chat-upload' } }));
+ }
pendingFiles = []; // clear only on success
// Stash the full meta (incl. width/height for images) on the module so
// callers that want it can grab it via getLastUploadedMeta(). Keep the
diff --git a/static/js/gallery.js b/static/js/gallery.js
index 822d0c8ec..09abbe322 100644
--- a/static/js/gallery.js
+++ b/static/js/gallery.js
@@ -14,7 +14,12 @@ let _open = false;
let _galleryResizeHandler = null;
// Auto-refresh gallery when new image is generated
-window.addEventListener('gallery-refresh', () => {
+window.addEventListener('gallery-refresh', (e) => {
+ if (e?.detail?.source === 'chat-upload' && _sort !== 'recent') {
+ _sort = 'recent';
+ const sortSel = document.getElementById('gallery-sort');
+ if (sortSel) sortSel.value = 'recent';
+ }
if (_open) _fetchLibrary(false);
});
let _items = [];
@@ -1894,6 +1899,13 @@ export function openGallery() {
if (_open) return;
_open = true;
_galleryCascaded = false; // replay the domino-in cascade on each open
+ let _freshChatUpload = false;
+ try {
+ const ts = Number(localStorage.getItem('gallery-fresh-chat-upload') || '0');
+ _freshChatUpload = ts > 0 && Date.now() - ts < 5 * 60 * 1000;
+ if (_freshChatUpload) localStorage.removeItem('gallery-fresh-chat-upload');
+ } catch (_) {}
+ if (_freshChatUpload) _sort = 'recent';
// State is preserved across close/reopen — filters, album, sort, items,
// albums, people — so reopening the gallery feels instant. Use the search
// input or "All" chip to clear the active filter.
@@ -1955,9 +1967,9 @@ export function openGallery() {