ae_idaa_comp__event_obj_id_edit.svelte: the component <style> block used @reference + @apply for ~10 local classes (.section-card, .field-label, .toggle-chip, .day-chip, etc.). svelte-check's CSS language service does not understand Tailwind v4 @reference/@apply directives and emitted 23 'Unknown at rule' warnings. Fix: all local class usages inlined as Tailwind utility strings directly on each element (~80 template sites). The <style> block is removed. Conditional classes on toggle-chip/day-chip converted to ternary expressions. svelte-check now reports 0 errors and 0 warnings across all files.
9.5 KiB
Frontend Agent Task List
Use this file to track steps for complex features or bug fixes. Status: <20> Stable — ongoing development.
🚧 Upcoming High Priority
[Stores] Refactor — ae_stores.ts and ae_events_stores.ts cleanup
Both files have grown organically and are messy. Refactor goals:
- Split into focused files per domain (core, user/auth, files, module-specific)
- Remove dead/commented-out code and stale
ver/ver_idbconstants from data structs (replaced by__versionin store_versions.ts) - Standardize field naming conventions
- Move sponsorships/stripe Stripe button IDs out of session store and into config
- Keep
ae_stores.tsandae_events_stores.tsas barrel re-exports for backwards compatibility Related:src/lib/stores/store_versions.tsis the new home for version constants.
[Backend] Join event_location_id onto event_presenter API view
The event_presenter object currently has event_session_id but not event_location_id.
When navigating from the Presenter View to the Launcher, the frontend has to do a secondary
session lookup to discover the location (magic redirect in launcher base +page.svelte).
Joining event_session.event_location_id into the presenter view/response would let the
frontend pass the location directly in the Launcher URL without the extra lookup.
- Backend: add
event_location_id(andevent_location_id_random) to theevent_presenterview or API response - Frontend: add
event_location_idtoae_EventPresentertype andproperties_to_save; pass asevents__launcher_idinpresenter_page_menu.svelte
[Launcher] Active features (identified 2026-03-06)
-
Font size cycler (Launcher sidebar): Font size cycler and light/dark toggle added to new
menu_launcher_controls.sveltecomponent; wired intolauncher_menu.svelte. Visibility toggles (All Files / All Sessions) moved to same component and restyled topreset-tonal-tertiary. (2026-03-11) -
Minor Svelte warning:
slct_event_location_idinmenu_location_list.svelte— prop already has$bindable(null); stale comment in file updated. (2026-03-11)
[Svelte] State reference warnings
state_referenced_locallywarnings resolved — all 42 warnings fixed. v1 edit form retired; v2 renamed to canonical name. Remaining 23 warnings inae_idaa_comp__event_obj_id_edit.svelteare CSS@apply/@referencewarnings from the svelte-check CSS language service not understanding Tailwind v4 at-rules — harmless, build works fine, not fixable without a full<style>block refactor. (2026-03-11)
[Badges] Remaining badge work before first live event
- Badge print controls UX polish: Scott has improvements in mind — TBD next session.
File:
ae_comp__badge_print_controls.svelte.
[Badges] Zebra ZC10L Hardware Testing — ~week of 2026-03-16
Scott is renting a Zebra ZC10L for one day to do real-world badge printing tests before
Axonius (mid-April). See documentation/PROJECT__AE_Events_Zebra_Hardware_Test_Day.md
for the full checklist and prep plan.
Pre-test work (do before printer arrives):
- Remove debug outlines from
print/+page.svelteprint CSS (lime/blue/red/orange/purple/cyan) - Zebra ZC10L Linux driver — install CUPS driver package ahead of time; verify card prints before burning rental time on driver setup. Check Zebra's site for Linux/CUPS driver.
- Wire
style_hrefvia<svelte:head>inprint/+page.svelte— needed so client-specific CSS loads from the template'sstyle_hreffield. Currently tracked as pending in MODULE doc. - Confirm
duplex=0hides badge back in print —duplexfield not yet on backend; verify badge_back is suppressed for single-sided PVC. May need a manual print CSS rule until the backend field lands andproperties_to_saveis updated. - Set up test event + PVC template in dev DB with
layout: badge_3.5x5.5_pvc, a few badge records with varied name lengths, HTML in fields, different badge_type_codes. - Test data set: include edge cases — very long name, HTML markup in name/affiliations, badge with no affiliations, badge with all ticket/option codes set.
[Leads] Exhibitor Lead Scanning — NEXT MAJOR FEATURE
QR code scan at exhibitor booth → capture attendee badge data. Gated by allow_tracking on
the badge. Check if documentation/MODULE__AE_Events_Leads.md exists for full spec.
Key questions before starting: which routes, does the Electron app scan, what does the
lead record look like in the DB?
[DevOps] Remaining deployment items
- Wire AE_APP_REPLICAS:
docker-compose.ymlline 147 already hasscale: ${AE_APP_REPLICAS:-1}. (verified 2026-03-11) - Archive ae_env_node_app: Archived as tar.gz under
~/OSIT_dev/backups/; old history/docs moved to~/OSIT_dev/for_reference_only/. (2026-03-11) - Build Optimization: Current state finalized. Local Gitea instance stood up at
git.dgrzone.com(Docker, home server) — future: migrate repos from Bitbucket, verify Backblaze/restic backups cover Gitea data. (2026-03-11)
[General]
- Temp Cleanup:
cleanup_tmp_fileswired inlauncher_background_sync.svelte; called at launcher startup. Confirmed working. (2026-03-11) window.print()for badge print button: Wire the existinghandle_print_badge()to triggerwindow.print(). Browser print works well across Chrome/Chromium/Firefox — no Electron needed.- Input Field Audit: Several input fields are missing
name/idattributes ordata-testid. Known examples: badge override fields inae_comp__badge_obj_view.svelte; template name input inae_comp__badge_template_form.svelte. Matters for: accessibility, autofill, label associations, and test targeting. (For tests, usegetByLabel()rather thaninput[value*=...]which only checks the HTML attribute, not the Svelte-bound DOM property.)
✅ Completed (2026-03)
- [Launcher] Hosted file download button
require_authprop — addedrequire_auth?: boolean(defaulttrue) toae_comp__hosted_files_download_button.svelte; all existing consumers unchanged. Launcherlauncher_file_cont.sveltepassesrequire_auth={false}so unauthenticated kiosk users can open/download files without being blocked. (2026-03-16) - [Security]
PUBLIC_AE_API_SECRET_KEYaudit complete. Key isPUBLIC_*by design (always in client bundle). Highest-risk anonymous path uses limited-permissionPUBLIC_AE_BOOTSTRAP_KEY. Full server-side migration not justified given JWT + account_id auth layers. Current state acceptable. (2026-03-11) - [UX] Session Expired banner —
ae_auth_errorstore wired to API helpers; root layout setsflag_expiredon 401/403; non-blocking dismissible banner rendered. (2026-03-12) - [UX] Access Denied UI standardized —
element_access_denied.sveltecreated;/corelayout,/events/settings, and/events/badges/reviewupdated to use it. (2026-03-12) - [Build] Rollup/Vite circular dependency warnings eliminated —
manualChunksinvite.config.tscolocates allsvelte/*internals into a singlesvelte-vendorchunk, preventingruntime.js/index-client.jssplit (~35 warnings gone). (2026-03-11) - [Refactor]
try_cacheaudit + sponsorship/event_file/hosted_file SWR alignment — removed vestigialtry_cacheparams fromgenerate_qr_code,ae_core_functionswrappers; added SWR fast/slow path to sponsorship loaders; changedevent_fileandhosted_filesingle-object loader defaults fromfalse→truefor consistency. (2026-03-11) - [DevOps] Frontend + Backend unified into single
aether_container_envDocker Compose.ae_appservice live with healthcheck, single exposed port (AE_APP_NODE_PORT), internalae_apinetworking. Deploy scripts inpackage.jsonboth target../aether_container_env/docker-compose.yml. (2026-03-10) - [DevOps]
/healthendpoint live atsrc/routes/health/+server.ts. DockerHEALTHCHECKuses it. (2026-03-10) - [UI] Dark mode
color-schemefix —html.dark/light { color-scheme }inapp.css; all native browser controls now sync to app dark mode. (2026-03-10) - [Launcher] Location select → session auto-load bug fixed via
$derived.by()liveQuery pattern. (2026-03-10) - [Svelte]
state_referenced_locallywarning fixes — 10 warnings resolved in IDAA archives/BB. (2026-03-09) - [TypeScript] Sign In/Out TS errors fixed —
user_id/person_idtyped asstring | null. (2026-03-09) - [Tests] All badge data integrity and attendee workflow Playwright tests passing. Root causes documented in
tests/README.md. (2026-03) - [Badges] Badge print controls panel, QR code, duplex wiring, review form, print button, multi-word fulltext search,
data-testidattributes. (2026-03) - [UI] Firefly Theme + Pres Mgmt Visual Redesign (5 files). (2026-03-06)
- [Docs] UI Style Guidelines + Component Patterns docs created. (2026-03-06)
- [API] V3 Lookup system integration; Event File V3 mapping;
event_sessionsearch 400-error fix. (2026-02/03) - [API] All CRUD helpers on V3
/v3/crud/...paths. (2026-02) - [Security] Purged
x-aether-api-token; fixed misplaced CORS headers; Account ID Scavenging. (2026-02) - [Security] Playwright integration tests replace
verify_jwt_logic.jssimulation tests. (2026-03) - [Framework]
AE_Obj_Field_Editor_V3with Svelte 5 Runes. CRUD v2 fully retired. (2026-03-05) - [IDAA] Bulletin Board and Recovery Meetings functionality verified. (2026-02)