From ba2558fbf7700fd1a5cff0ff5a57592902b2b26b Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 16 Jun 2026 14:32:56 -0400 Subject: [PATCH] feat(pres_mgmt): self-documenting Config page + split POC into its own section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two things prompted by direct feedback after testing: 1. Every input on the Config page now has a title tooltip explaining what it actually controls, where, and any interaction with other settings (e.g. clarifying Hide Location affects both the session detail page AND the Location column in Session Search results — not obvious from the label alone). 2. Split "Session Field Visibility" into "Session Display" (just description/location/message) and a new dedicated "POC Settings" section. Previously hide__session_poc ("Hide POC", checked = remove) sat directly next to show__session_li_poc_field ("Show POC Column", checked = add) in the same flat list — same checked state meaning opposite things for adjacent fields, confusing even though each field's own hide__/show__ naming is internally consistent with the project convention. Hide POC is now rendered as a visually distinct master switch (bold, its own row) with the three dependent settings indented under a left border below it and auto-disabled (with reduced opacity) whenever Hide POC is checked, so the "no effect once hidden" dependency is visible in the UI, not just documented in a footnote. No field semantics changed — same PressMgmtRemoteCfg, same sync function, same save path. Pure presentation/documentation pass. Logged the rationale in PROJECT__AE_Events_PressMgmt_Config_Cleanup.md. svelte-check: 0 errors, 0 warnings. Co-Authored-By: Claude Sonnet 4.6 --- ...ECT__AE_Events_PressMgmt_Config_Cleanup.md | 29 ++-- .../(pres_mgmt)/pres_mgmt/config/+page.svelte | 125 +++++++++++++----- 2 files changed, 112 insertions(+), 42 deletions(-) diff --git a/documentation/PROJECT__AE_Events_PressMgmt_Config_Cleanup.md b/documentation/PROJECT__AE_Events_PressMgmt_Config_Cleanup.md index 2ff735a6..9fb781e9 100644 --- a/documentation/PROJECT__AE_Events_PressMgmt_Config_Cleanup.md +++ b/documentation/PROJECT__AE_Events_PressMgmt_Config_Cleanup.md @@ -179,15 +179,26 @@ AFTER: pres_mgmt_loc.current.hide__session_code No System section — there is no `lock_config` (removed 2026-06-16). 1. **Labels** — `label__*` fields (text inputs, nullable) -2. **Session Visibility** — `hide__session_*` toggles -3. **Presenter Visibility** — `hide__presenter_*` toggles -4. **Presentation Visibility** — `hide__presentation_*` toggles -5. **Code Visibility** — `hide__*_code` toggles -6. **Opt-in Features** — `show__*` toggles -7. **Requirements** — `require__presenter_agree`, `require__session_agree` -8. **Navigation Limits** — `limit__navigation` (`limit__options` removed — YAGNI) -9. **File Purpose Config** — `file_purpose_option_kv` (JSON editor or structured form) -10. **Report Visibility** — `hide__report_kv` (key-value toggles) +2. **Code Visibility** — `hide__*_code` toggles +3. **Session Display** — `hide__session_description/location/msg` (just the simple ones — + POC split out below 2026-06-16 for clarity) +4. **POC Settings** (Point of Contact) — `hide__session_poc` rendered as a visually distinct + master switch, with `show__session_li_poc_field` / `hide__session_poc_biography` / + `hide__session_poc_profile` / `hide__session_poc_profile_pic` indented and + auto-`disabled` underneath it when the master switch is on. Was previously flat in + "Session Field Visibility" with `hide__session_poc` and `show__session_li_poc_field` + sitting adjacent with opposite checked-state polarity ("Hide POC" checked = remove, + "Show POC Column" checked = add) — confusing, per direct user feedback. Splitting it + into its own section with explicit master/sub-setting hierarchy fixed it without + touching the underlying field semantics (still `hide__`/`show__` per the naming + convention — only the *presentation* changed). +5. **Presenter Visibility** — `hide__presenter_*` toggles +6. **Presentation Visibility** — `hide__presentation_*` toggles +7. **Opt-in Features** — `show__*` toggles +8. **Requirements** — `require__presenter_agree`, `require__session_agree` +9. **Navigation Limits** — `limit__navigation` (`limit__options` removed — YAGNI) +10. **File Purpose Config** — `file_purpose_option_kv` (JSON editor or structured form) +11. **Report Visibility** — `hide__report_kv` (key-value toggles) --- diff --git a/src/routes/events/[event_id]/(pres_mgmt)/pres_mgmt/config/+page.svelte b/src/routes/events/[event_id]/(pres_mgmt)/pres_mgmt/config/+page.svelte index 1f590372..1fb8305b 100644 --- a/src/routes/events/[event_id]/(pres_mgmt)/pres_mgmt/config/+page.svelte +++ b/src/routes/events/[event_id]/(pres_mgmt)/pres_mgmt/config/+page.svelte @@ -183,6 +183,7 @@ let sections: Record = $state({ labels: true, codes: true, session: true, + poc: true, presenter: true, presentation: true, opt_in: true, @@ -268,6 +269,7 @@ function toggle(key: string) { type="text" class="input" placeholder="External ID" + title="Overrides the label shown for a Person's external ID field across the app. Leave blank to use the default 'External ID'." bind:value={draft.label__person_external_id} /> @@ -293,6 +297,7 @@ function toggle(key: string) { type="text" class="input" placeholder="Point of Contact" + title="The display label shown to users for a session's Point of Contact (e.g. 'Champion', 'Host'). Leave blank to use the default 'Point of Contact'." bind:value={draft.label__session_poc_name} /> e.g. "Champion", "Point of Contact" @@ -314,12 +319,12 @@ function toggle(key: string) { {#if sections.codes}
{#each [ - { field: 'hide__session_code' as const, label: 'Hide Session Code' }, - { field: 'hide__location_code' as const, label: 'Hide Location Code' }, - { field: 'hide__presenter_code' as const, label: 'Hide Presenter Code' }, - { field: 'hide__presentation_code' as const, label: 'Hide Presentation Code' } + { field: 'hide__session_code' as const, label: 'Hide Session Code', title: "Hides the session's short code wherever sessions are listed or viewed." }, + { field: 'hide__location_code' as const, label: 'Hide Location Code', title: "Hides the location's short code wherever locations are listed or viewed." }, + { field: 'hide__presenter_code' as const, label: 'Hide Presenter Code', title: "Hides the presenter's short code. Not currently shown anywhere in the app — has no visible effect yet." }, + { field: 'hide__presentation_code' as const, label: 'Hide Presentation Code', title: "Hides the presentation's short code wherever presentations are listed or viewed." } ] as item (item.field)} -