pres_mgmt: config schema cleanup phase 2

- Add show__session_qr + show__presenter_qr to PressMgmtRemoteCfg and sync function;
  QR toggles now gated on remote admin enable (trusted_access can still override)
- Remove hide__launcher_link_legacy everywhere (Flask launcher fully retired)
- Remove limit__options (YAGNI)
- Implement limit__navigation: hides Session Search nav link for non-trusted users
- Wire hide__report_kv into reports page: all 8 report tabs now use synced store
  with canonical slug names and edit_mode bypass; config UI now uses structured
  toggles instead of raw JSON textarea
- Gate hide__launcher_link local toggle on show__launcher_link || trusted_access
- Config UI: add show__session_qr + show__presenter_qr to opt-in features section
- Menu opts: add Query Limits / Display & Search / Staff Options section labels
- Bump AE_PRES_MGMT_LOC_VERSION to 2 (schema change forces localStorage reset)
- svelte-check: 0 errors
This commit is contained in:
Scott Idem
2026-06-16 11:39:47 -04:00
parent a47a2103eb
commit 2364c0edfb
14 changed files with 204 additions and 273 deletions

View File

@@ -76,6 +76,7 @@ import {
class:hidden={!pres_mgmt_loc.current.expand__menu_opts}>
{#if $ae_loc.authenticated_access}
<div class="flex flex-col items-end justify-center gap-1">
<p class="text-surface-500 w-full text-right text-xs font-semibold uppercase tracking-wide">Query Limits</p>
<span class="flex flex-col items-end justify-center gap-1">
<!-- Max person select options -->
<span
@@ -252,6 +253,7 @@ import {
{/if}
<div class="flex flex-col flex-wrap items-center justify-evenly gap-1">
<p class="text-surface-500 w-full text-center text-xs font-semibold uppercase tracking-wide">Display &amp; Search</p>
<button
type="button"
onclick={() => {
@@ -340,6 +342,7 @@ import {
</div>
<div class="flex flex-col items-center justify-center gap-1">
<p class="text-surface-500 w-full text-center text-xs font-semibold uppercase tracking-wide">Staff Options</p>
{#if $ae_loc.trusted_access}
<div class="flex flex-col items-center justify-center gap-1">
{#if pres_mgmt_loc.current.show__copy_access_link}
@@ -390,64 +393,68 @@ import {
{#if $ae_loc.authenticated_access}
<div class="flex flex-col items-end justify-center gap-1">
{#if pres_mgmt_loc.current.show_content__session_qr}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__session_qr = false;
}}
class="btn btn-sm ae_btn_surface w-full justify-between text-center"
title="Showing Session QR Code">
<ToggleRight size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Hide Session QR
</span>
</button>
{:else}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__session_qr = true;
}}
class="btn btn-sm ae_btn_surface_outlined w-full justify-between text-center"
title="Show Session QR Code">
<ToggleLeft size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Show Session QR Code?
</span>
</button>
{#if pres_mgmt_loc.current.show__session_qr || $ae_loc.trusted_access}
{#if pres_mgmt_loc.current.show_content__session_qr}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__session_qr = false;
}}
class="btn btn-sm ae_btn_surface w-full justify-between text-center"
title="Showing Session QR Code">
<ToggleRight size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Hide Session QR
</span>
</button>
{:else}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__session_qr = true;
}}
class="btn btn-sm ae_btn_surface_outlined w-full justify-between text-center"
title="Show Session QR Code">
<ToggleLeft size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Show Session QR Code?
</span>
</button>
{/if}
{/if}
{#if pres_mgmt_loc.current.show_content__presenter_qr}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__presenter_qr = false;
}}
class="btn btn-sm ae_btn_surface w-full justify-between text-center"
title="Showing Presenter QR Code">
<ToggleRight size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Hide Presenter QR
</span>
</button>
{:else}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__presenter_qr = true;
}}
class="btn btn-sm ae_btn_surface_outlined w-full justify-between text-center"
title="Show Presenter QR Code">
<ToggleLeft size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Show Presenter QR Code?
</span>
</button>
{#if pres_mgmt_loc.current.show__presenter_qr || $ae_loc.trusted_access}
{#if pres_mgmt_loc.current.show_content__presenter_qr}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__presenter_qr = false;
}}
class="btn btn-sm ae_btn_surface w-full justify-between text-center"
title="Showing Presenter QR Code">
<ToggleRight size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Hide Presenter QR
</span>
</button>
{:else}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.show_content__presenter_qr = true;
}}
class="btn btn-sm ae_btn_surface_outlined w-full justify-between text-center"
title="Show Presenter QR Code">
<ToggleLeft size="1em" class="m-1" />
<span class="grow">
<QrCode size="1em" class="m-1" />
Show Presenter QR Code?
</span>
</button>
{/if}
{/if}
</div>
{/if}
@@ -455,47 +462,29 @@ import {
{#if $ae_loc.authenticated_access}
<div class="flex flex-col items-center justify-center gap-1">
<!-- Show/Hide launcher links (new version) -->
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.hide__launcher_link =
!pres_mgmt_loc.current.hide__launcher_link;
}}
class="btn btn-sm ae_btn_surface w-full justify-between text-center">
{#if pres_mgmt_loc.current.hide__launcher_link}<ToggleLeft
size="1em"
class="m-1" />{:else}<ToggleRight
size="1em"
class="m-1" />{/if}
<span class="grow">
<Plane size="1em" class="m-1" />
{pres_mgmt_loc.current.hide__launcher_link
? 'Show Launcher Links'
: 'Hide Launcher Links?'}
</span>
</button>
<!-- Show/Hide launcher links (legacy version) -->
<!-- <button
type="button"
onclick={() => {
pres_mgmt_loc.current.hide__launcher_link_legacy =
!pres_mgmt_loc.current.hide__launcher_link_legacy;
}}
class="btn btn-sm ae_btn_surface w-full justify-between text-center">
{#if pres_mgmt_loc.current.hide__launcher_link_legacy}<ToggleLeft
size="1em"
class="m-1" />{:else}<ToggleRight
size="1em"
class="m-1" />{/if}
<span class="grow">
<Send size="1em" class="m-1" />
{pres_mgmt_loc.current.hide__launcher_link_legacy
? 'Show Legacy Launcher Links'
: 'Hide Legacy Launcher Links?'}
</span>
</button> -->
<!-- Show/Hide launcher links — only visible when admin has enabled launcher (show__launcher_link)
OR user has trusted_access (staff onsite override) -->
{#if pres_mgmt_loc.current.show__launcher_link || $ae_loc.trusted_access}
<button
type="button"
onclick={() => {
pres_mgmt_loc.current.hide__launcher_link =
!pres_mgmt_loc.current.hide__launcher_link;
}}
class="btn btn-sm ae_btn_surface w-full justify-between text-center">
{#if pres_mgmt_loc.current.hide__launcher_link}<ToggleLeft
size="1em"
class="m-1" />{:else}<ToggleRight
size="1em"
class="m-1" />{/if}
<span class="grow">
<Plane size="1em" class="m-1" />
{pres_mgmt_loc.current.hide__launcher_link
? 'Show Launcher Links'
: 'Hide Launcher Links?'}
</span>
</button>
{/if}
<!-- Show/Hide links to the location (room) -->
<button