From 10e9206ca4ae75925a274baafb211c30ca2d0676 Mon Sep 17 00:00:00 2001
From: Scott Idem
Date: Mon, 6 Apr 2026 17:19:35 -0400
Subject: [PATCH] fix(leads): persist licensed auth across reloads; manage tab
UX fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
**Session persistence bug** — leads_loc_defaults was missing __version: 1.
store_versions.ts wipes ae_leads_loc when parsed.__version !== 1 (always true
when the field is absent), so every page reload cleared auth_exhibit_kv and
forced re-login. Adding __version: 1 to both the interface and defaults fixes
this for all auth types.
**Manage tab fixes:**
- Description: collapsed by default with ChevronDown/Up toggle — same pattern
as session_view.svelte. Avoids long promo copy dominating the manage screen.
- Staff Passcode: removed duplicate green plain-text display for admins; the
Element_ae_obj_field_editor already shows the value (was showing twice).
- Booth Identifier: replaced static read-only display with Element_ae_obj_field_editor
so the booth code (exhibit.code) is editable inline.
Co-Authored-By: Claude Sonnet 4.6
---
.../ae_events_stores__leads_defaults.ts | 2 +
.../[exhibit_id]/ae_tab__manage.svelte | 80 ++++++++++++-------
2 files changed, 51 insertions(+), 31 deletions(-)
diff --git a/src/lib/stores/ae_events_stores__leads_defaults.ts b/src/lib/stores/ae_events_stores__leads_defaults.ts
index 733fb96f..a5a89066 100644
--- a/src/lib/stores/ae_events_stores__leads_defaults.ts
+++ b/src/lib/stores/ae_events_stores__leads_defaults.ts
@@ -7,6 +7,7 @@
*/
export interface LeadsLocState {
+ __version: number;
show_option__paid_tab: boolean;
show_content__scan_alert: boolean;
show_content__scan_requirements: boolean;
@@ -78,6 +79,7 @@ export interface LeadsSessState {
// Persisted leads config — survives browser sessions.
export const leads_loc_defaults: LeadsLocState = {
+ __version: 1,
show_option__paid_tab: true,
show_content__scan_alert: true, // Workaround for QR scanner edge-case bug.
show_content__scan_requirements: true,
diff --git a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte
index a1f79a64..1b038944 100644
--- a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte
+++ b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte
@@ -17,6 +17,7 @@ import Comp_exhibit_payment from './ae_comp__exhibit_payment.svelte';
import {
ChevronDown,
ChevronRight,
+ ChevronUp,
Clock,
CreditCard,
Database,
@@ -62,6 +63,7 @@ let updating = $state(false);
let show_license_mgmt = $state(false);
let show_custom_questions = $state(false);
let show_billing = $state(false);
+let desc_expanded = $state(false);
function handle_signout() {
if (confirm('Sign out from this booth?')) {
@@ -212,26 +214,40 @@ function handle_signout() {
-
+
-
- (desc_expanded = !desc_expanded)}
+ aria-expanded={desc_expanded}>
+ Booth Description / Promo
-
-
- events_func.load_ae_obj_id__event_exhibit({
- api_cfg: $ae_api,
- exhibit_id
- })} />
+
+ {#if desc_expanded}
+
+ {:else}
+
+ {/if}
+
+
+ {#if desc_expanded}
+
+
+ events_func.load_ae_obj_id__event_exhibit({
+ api_cfg: $ae_api,
+ exhibit_id
+ })} />
+
+ {/if}
@@ -256,14 +272,6 @@ function handle_signout() {
Staff Passcode
-
- {#if $ae_loc.administrator_access}
-
- {$lq__exhibit_obj?.staff_passcode || '----'}
-
- {/if}
-
-
+
+ class="mb-1 text-[10px] font-black tracking-widest uppercase opacity-40">
Booth Identifier
-
- #{$lq__exhibit_obj?.code || 'N/A'}
-
+
+ events_func.load_ae_obj_id__event_exhibit({
+ api_cfg: $ae_api,
+ exhibit_id
+ })} />