Bind UI listeners before conversations load (v1.10.4)

setupEventListeners() now runs immediately after initTheme() instead
of after the await chain for loadOrgId / load*Prefs / loadConversations.
The settings gear, filter funnel, search bar, and other UI controls
are interactive from the start of the loading screen instead of only
after the conversation list arrives.

Handlers that read conversation data either iterate empty arrays
harmlessly or already guard with `if (data)` checks, so attaching
them early is safe.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
tux tucker 2026-05-18 19:32:24 -04:00
parent a55d0e7490
commit c53ace8054
5 changed files with 12 additions and 4 deletions

View file

@ -162,6 +162,9 @@ window.addEventListener('pageshow', (event) => {
// Initialize on page load
document.addEventListener('DOMContentLoaded', async () => {
initTheme();
// Wire up UI listeners (settings dropdown, filters, search, etc.) immediately
// so the chrome stays interactive while orgId / conversations are still loading.
setupEventListeners();
const loadingStart = Date.now();
await loadOrgId();
await loadExportTimestamps();
@ -173,7 +176,6 @@ document.addEventListener('DOMContentLoaded', async () => {
const loadingText = document.getElementById('loadingText');
if (loadingText) loadingText.textContent = 'Loading conversations...';
await loadConversations();
setupEventListeners();
});
// Load organization ID — auto-detect first, fall back to stored

View file

@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "Claude Exporter Beta",
"version": "1.10.3",
"version": "1.10.4",
"description": "Export conversations and artifacts from Claude.ai",
"permissions": [
"activeTab",

View file

@ -1,5 +1,9 @@
# Changelog
## [1.10.4]
- Browse page settings dropdown (and other UI controls) are now interactive immediately on page load — `setupEventListeners()` runs right after `initTheme()` instead of waiting for `loadConversations()` to finish. The settings gear, filter funnel, search bar, and sort headers all work while conversations are still loading.
## [1.10.3]
- New Options section: **Contact & Diagnostics**

View file

@ -162,6 +162,9 @@ window.addEventListener('pageshow', (event) => {
// Initialize on page load
document.addEventListener('DOMContentLoaded', async () => {
initTheme();
// Wire up UI listeners (settings dropdown, filters, search, etc.) immediately
// so the chrome stays interactive while orgId / conversations are still loading.
setupEventListeners();
const loadingStart = Date.now();
await loadOrgId();
await loadExportTimestamps();
@ -173,7 +176,6 @@ document.addEventListener('DOMContentLoaded', async () => {
const loadingText = document.getElementById('loadingText');
if (loadingText) loadingText.textContent = 'Loading conversations...';
await loadConversations();
setupEventListeners();
});
// Load organization ID — auto-detect first, fall back to stored

View file

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Claude Exporter Beta",
"version": "1.10.3",
"version": "1.10.4",
"description": "Export conversations and artifacts from Claude.ai",
"permissions": [
"activeTab",