feat(events): restore inc_file_counts opt-in, session list layout + button polish
- Add `inc_file_counts` flag to `load_ae_obj_id__event_session` — maps to backend alt view (v_event_session_w_file_count) when true; default stays lightweight. Callers never pass raw view names. - Preserve-on-write fallback in `_refresh_session_id_background` keeps cached file_count/file_count_all if API response omits them. - Session detail +page.ts uses `inc_file_counts: true` so SvelteKit prefetch no longer clobbers counts via bulkPut on hover. - Remove explicit `view: 'alt'` from launcher +page.ts (now invalid param). - Session list link: flex-1 + min-w-0 for full-row width; name flex-1 pushes badge group right; code + file_count stacked in flex-col items-end. - Hover styling: button-like appearance with slow fade-out (duration-500) / fast snap-in (hover:duration-150). - Session +page.svelte: use url_session_id (string) for link_to_id props and auth__kv.session[] index — fixes TS type error from number|undefined. - IDAA layout: dormant tech notice banner (guarded by 1==3, remove when ready). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -64,6 +64,17 @@ let verify_failed_for_uuid: string | null = null;
|
||||
// Handles the case where site_cfg_json loads without novi_idaa_api_key (stale cache)
|
||||
// or the Novi API call hangs — the user would otherwise be stuck with no escape.
|
||||
const VERIFY_TIMEOUT_MS = 8000;
|
||||
|
||||
// One-time technical notice banner — persisted in localStorage so it only shows once.
|
||||
// TEMPORARY (2026-04-01): Remove this block after a few days.
|
||||
const TECH_NOTICE_KEY = 'idaa_tech_notice_2026_04_01_dismissed';
|
||||
let show_tech_notice: boolean = $state(
|
||||
browser ? localStorage.getItem(TECH_NOTICE_KEY) !== 'true' : false
|
||||
);
|
||||
function dismiss_tech_notice() {
|
||||
show_tech_notice = false;
|
||||
try { localStorage.setItem(TECH_NOTICE_KEY, 'true'); } catch { /* storage unavailable */ }
|
||||
}
|
||||
let verifying_timed_out: boolean = $state(false);
|
||||
|
||||
$effect(() => {
|
||||
@@ -353,6 +364,28 @@ async function verify_novi_uuid(
|
||||
{/if}
|
||||
</div>
|
||||
{:else if $ae_loc.trusted_access || ($ae_loc.authenticated_access && $idaa_loc.novi_uuid && $idaa_loc.novi_verified)}
|
||||
{#if show_tech_notice && 1 == 3}
|
||||
<!-- TEMPORARY (2026-04-01): One-time notice about last night's technical issues. Remove after a few days. -->
|
||||
<div class="m-2 flex items-start gap-3 rounded-lg border border-yellow-400 bg-yellow-50 p-3 text-yellow-900 dark:border-yellow-600 dark:bg-yellow-950 dark:text-yellow-100">
|
||||
<span class="fas fa-exclamation-triangle mt-0.5 shrink-0 text-yellow-500"></span>
|
||||
<p class="flex-1 text-sm">
|
||||
Opt 1:
|
||||
<strong>Notice:</strong> We experienced technical difficulties last night (March 31) and this morning (April 1). Things are back to normal. We apologize for any inconvenience.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
Opt 2:
|
||||
<strong>Notice:</strong> We have experienced some technical difficulties recently. Things are back to normal. We apologize for any inconvenience.
|
||||
</p>
|
||||
<button
|
||||
type="button"
|
||||
class="shrink-0 rounded px-2 py-1 text-xs font-semibold hover:bg-yellow-200 dark:hover:bg-yellow-800 btn"
|
||||
onclick={dismiss_tech_notice}>
|
||||
OK
|
||||
</button>
|
||||
</div>
|
||||
{/if}
|
||||
{@render children?.()}
|
||||
{#if $idaa_loc.novi_uuid}
|
||||
<span class="text-sm text-gray-500">
|
||||
|
||||
Reference in New Issue
Block a user