feat(arch): adopt hypermedia & vertical slicing paradigm (Datastar + Deno SSR)
- Establish server-driven hypermedia architecture with Datastar to eliminate brittle imperative client DOM manipulation - Codify vertical feature slicing (routes, queries, fragments co-located by domain) - Formalize right-sized dual transport: standard text/html for user mutations, targeted SSE for Valkey pub/sub broadcasts - Define zero-trust guardrails: untrusted client signals, 16KB payload bounds, rate limiting, and data-ignore subtree protection - Establish hypermedia error protocol (4xx/5xx return JSX error fragments) and mid-stream SSE resilience - Add active task checklist with granular 1-to-1 items and shared component suggestions - Update AGENTS.md with AI-optimized engineering principles (SRP, bounded files, flat call chains, distinctive naming)
This commit is contained in:
parent
70542c2dc2
commit
081cd9c765
93
tasks/checklist.md
Normal file
93
tasks/checklist.md
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
# Active Task Checklist
|
||||||
|
|
||||||
|
### Sticky Navigation Header
|
||||||
|
|
||||||
|
- [ ] `sticky-sub-header-docking`: Dock the sticky `Sessions & Events`
|
||||||
|
sub-header directly beneath the main navigation bar so it scrolls smoothly
|
||||||
|
without overlapping or covering top navigation elements.
|
||||||
|
- [ ] `sticky-sub-header-opaque-bg`: Ensure the sticky sub-header has an opaque
|
||||||
|
background so underlying cards do not bleed through on scroll.
|
||||||
|
|
||||||
|
### Single Session Creation (DirectPassDrawer)
|
||||||
|
|
||||||
|
- [ ] `single-session-form-hiding`: Hide the single session creation form upon
|
||||||
|
minting so only the completed handoff card is displayed.
|
||||||
|
- [ ] `single-session-cancel-button-removal`: Remove the Cancel button from the
|
||||||
|
view once a single session has been created.
|
||||||
|
- [ ] `single-session-copy-button-styling`: Style the 1-Click Link copy button
|
||||||
|
using the standard outline style matching other copy actions.
|
||||||
|
- [ ] `single-session-submit-button-label`: Label the single session drawer
|
||||||
|
submit button as "Create Session".
|
||||||
|
- [ ] `single-session-handoff-ok-button`: Label the single session handoff
|
||||||
|
completion button as "OK".
|
||||||
|
|
||||||
|
### Multi-Claim Event Creation (WorkshopDrawer)
|
||||||
|
|
||||||
|
- [ ] `event-submit-button-label`: Label the multi-claim event drawer submit
|
||||||
|
button as "Create Event".
|
||||||
|
- [ ] `event-handoff-ok-button`: Label the multi-claim event handoff completion
|
||||||
|
button as "OK".
|
||||||
|
|
||||||
|
### Dropdown Accordion Headers
|
||||||
|
|
||||||
|
- [ ] `single-session-accordion-arrow-fix`: Eliminate the broken double arrow
|
||||||
|
(`> >`) from the single session optional settings dropdown header.
|
||||||
|
- [ ] `single-session-accordion-label`: Label the single session optional
|
||||||
|
settings dropdown header as "Customize App Permissions & Scopes
|
||||||
|
(Optional)".
|
||||||
|
- [ ] `workshop-accordion-arrow-fix`: Eliminate the broken double arrow (`> >`)
|
||||||
|
from the workshop pass optional settings dropdown header.
|
||||||
|
- [ ] `workshop-accordion-label`: Label the workshop pass optional settings
|
||||||
|
dropdown header as "Custom Vanity Slug & PIN Code (Optional)".
|
||||||
|
|
||||||
|
### Rapid Creation & Tab State
|
||||||
|
|
||||||
|
- [ ] `single-session-create-another-button`: Add a "Create Another" button on
|
||||||
|
the single session handoff card that clears the form and starts a new
|
||||||
|
session in one click.
|
||||||
|
- [ ] `event-create-another-button`: Add a "Create Another" button on the event
|
||||||
|
handoff card that clears the form and starts a new event in one click.
|
||||||
|
- [ ] `handoff-tab-lock-state`: Disable switching between Single Session and
|
||||||
|
Multi-Claim Event tabs while viewing a completed handoff card.
|
||||||
|
- [ ] `handoff-tab-unlock-on-reset`: Re-enable tab switching when the user
|
||||||
|
clicks "Create Another" or closes the drawer.
|
||||||
|
|
||||||
|
### Expired Events Management
|
||||||
|
|
||||||
|
- [ ] `expired-events-query-split`: Separate event passes into active events and
|
||||||
|
expired events based on their expiration timestamp and status.
|
||||||
|
- [ ] `expired-events-collapsible-accordion`: Organize expired events into a
|
||||||
|
dedicated collapsible `<details>` section titled "📁 Expired Events (N)"
|
||||||
|
below active events.
|
||||||
|
- [ ] `expired-events-card-styling`: Display expired event passes with distinct
|
||||||
|
muted styling and expired status badges.
|
||||||
|
- [ ] `expired-events-1click-reopen`: Provide a one-click "+1h Reopen" button on
|
||||||
|
naturally expired events to add time and reactivate them.
|
||||||
|
|
||||||
|
### Guest Drawer Telemetry & Sync
|
||||||
|
|
||||||
|
- [ ] `guest-drawer-telemetry-backend`: Fetch the last activity action, last
|
||||||
|
activity timestamp, and agent flag for each attendee.
|
||||||
|
- [ ] `guest-drawer-last-action-display`: Display the attendee's last recorded
|
||||||
|
action and relative time on their guest card.
|
||||||
|
- [ ] `guest-drawer-client-badge`: Display a client icon (such as Web or CLI) on
|
||||||
|
each attendee card based on their recorded action.
|
||||||
|
- [ ] `guest-drawer-timer-sync-on-extend`: Dynamically update the countdown
|
||||||
|
timer and expiration time in the open guest drawer when an event is
|
||||||
|
extended.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Suggestions & Architectural Notes (Ideas to Evaluate)
|
||||||
|
|
||||||
|
- **Shared Drawer / Form Component Extraction:** The Single Session
|
||||||
|
(`DirectPassDrawer.tsx`) and Multi-Claim Event (`WorkshopDrawer.tsx`) creation
|
||||||
|
forms share many common UI features (app selection dropdown, lifespan preset
|
||||||
|
pills, optional settings accordion, action bars, and handoff cards). Consider
|
||||||
|
consolidating shared form sections or extracting common sub-components to
|
||||||
|
reduce code duplication and ensure consistent state handling.
|
||||||
|
- **Unified Handoff Card Pattern:** The post-creation handoff state across both
|
||||||
|
forms follows the exact same pattern (badge header, copy buttons for
|
||||||
|
links/CLI/tokens, and dual `[ Create Another ]` + `[ OK ]` footer). A shared
|
||||||
|
component or common helper could streamline handoff rendering and state resets
|
||||||
|
across both modes.
|
||||||
Loading…
x
Reference in New Issue
Block a user