Wrap the "I'm attending" button with animated glow-border and
glass-inner styling. Update test selectors for new structure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use .glass class on form fields and buttons on gradient backgrounds.
Buttons get gradient glow border via background-clip trick. Solid
white fallback preserved for BottomSheet context.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Centralize all hardcoded rgba color values into CSS custom properties
and extract glass/glow styles into reusable utility classes (.glass,
.glass-inner, .glow-border, .glow-border--animated) in main.css.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace solid orange FAB with glassmorphism inner and a conic
gradient border (pink-purple-indigo) with subtle glow halo.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hard-edged color overlay with CSS mask-image fade-out and
increase hero height to 420px for a seamless blend into the aurora
mesh background.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use layered radial gradients on a dark base (#1B1730) with
backdrop blur for an organic, aurora-like background effect
that better complements the glassmorphism event cards.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace solid white event cards with glass-effect cards featuring
backdrop blur, semi-transparent gradient backgrounds, and light
borders that blend with the Electric Dusk gradient background.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New GET /events/{token}/attendees endpoint returns attendee names when
a valid organizer token is provided (403 otherwise). The frontend
conditionally renders the list below the attendee count for organizers,
silently degrading for visitors.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Group events into five temporal sections with section headers, date subheaders,
and context-aware time display (clock time for upcoming, relative for past).
Includes new useEventGrouping composable, SectionHeader and DateSubheader
components, full unit and E2E test coverage.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace card-based event detail view with full-screen gradient layout.
Add hero image with gradient overlay, icon-based meta rows, and
"About" section. Content renders directly on the gradient background
with white text for an app-native feel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enable users to see all their saved events on the home screen, sorted
by date with upcoming events first. Key capabilities:
- EventCard with title, relative time display, and organizer/attendee
role badge
- Sortable EventList with past-event visual distinction (faded style)
- Empty state when no events are stored
- Swipe-to-delete gesture with confirmation dialog
- Floating action button for quick event creation
- Rename router param :token → :eventToken across all views
- useRelativeTime composable (Intl.RelativeTimeFormat)
- useEventStorage: add validation, removeEvent(), reactive versioning
- Full E2E and unit test coverage for all new components
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces BottomSheet and RsvpBar components, integrates the RSVP
submission flow into EventDetailView, extends useEventStorage with
saveRsvp/getRsvp, and adds unit tests plus an E2E spec for the RSVP
workflow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add missing timezone field to CreateEventResponse mock
- Fix createTestRouter signature to accept optional token parameter
- Add non-null assertion for dateField element access
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New view fetches event via openapi-fetch, formats date/time with
Intl.DateTimeFormat. Skeleton shimmer during loading (CSS-only).
Create form now sends auto-detected timezone.
Unit tests for all five view states, E2E tests with MSW mocks.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Post-creation confirmation page showing shareable event URL with
copy-to-clipboard and fallback feedback on failure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Form with client-side validation, server error handling, aria-invalid/
aria-describedby for a11y, localStorage persistence via useEventStorage
composable. Routes for /create and /events/:token.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Strip default Vue components (HelloWorld, TheWelcome, icons, AboutView),
base.css, and placeholder assets. Add Sora font (self-hosted WOFF2),
Electric Dusk color palette, and design system spec.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend: openapi-generator-maven-plugin generates Spring interfaces and DTOs
from the spec. Frontend: openapi-typescript + openapi-fetch provide type-safe
API access. Both sides get compile-time contract enforcement from a single
api.yaml file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend: Spring Boot 3.5.11 on Java 25, Maven with wrapper, hexagonal
architecture package layout (domain/application/adapter/config), health
endpoint with integration test. Originally planned for Spring Boot 4.0
but pivoted due to massive package reorganization in 4.0 (see addenda
in research and plan docs).
Frontend: Vue 3 scaffolded via create-vue with TypeScript, Vue Router,
Vitest, ESLint, Prettier. Pivoted from Svelte due to ecosystem maturity
concerns (broken router ecosystem for Svelte 5).
Also: extended .gitignore for Java/Maven and Node/Vue artifacts, updated
CLAUDE.md with tech stack, build commands, agent documentation sections,
and document integrity rule.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>