Conversation
Many events (ceremonies, cocktail hours) have a defined start time but no end time. The previous condition required both startTime and endTime to display the time row, so events with only a start time showed nothing. Now start time is always shown when present, and the end time is appended with an en-dash when it exists. Also adds a Clock icon to the time row so it visually matches the Calendar (date) and MapPin (venue) rows above it.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
This was referenced Aug 24, 2026
This was referenced Sep 3, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Daily Product Improvement
Summary
Event cards previously suppressed the time row entirely when only a start time was set — requiring both
startTimeandendTimeto render. This meant ceremonies and other events with an open-ended duration showed no time at all. The fix displays start time unconditionally when present and appends the end time with an en-dash separator when available. AClockicon is also added so the time row visually matches theCalendar(date) andMapPin(venue) rows above it.TLDR
Event cards now show start time even when no end time is set; adds
Clockicon to match sibling info rows.Description
Events like ceremonies and cocktail hours commonly have a defined start time but no fixed end time. The previous time display condition (
event.startTime && event.endTime) hid the row completely for these events, leaving users with no time context on the card.This Change
event.endTimerequirement from the time visibility conditionClockicon to align the time row visually withCalendarandMapPinrowsRecommendations Reviewed
Area:
event-card.tsx— Events pageIssue: Time row suppressed when only start time is set
Recommendation: Show start time whenever present; append end time with separator only when available
Type: UX/UI
Priority: High
Effort: Small
Area:
category-form.tsx— Budget section formIssue: Editing a category with no planned amount pre-fills the input with
"0"becauseString(0) === "0", forcing users to manually clear itRecommendation: Change
String(category.plannedAmount)tocategory?.plannedAmount ? String(category.plannedAmount) : ''Type: UX/UI
Priority: Medium
Effort: Small
Area:
planning-overview.tsx— MilestonesCardIssue: When no milestones exist, the card body renders empty with no message or CTA
Recommendation: Add a contextual empty state: "Set your wedding date to see your planning timeline" with link to
/checklistType: UX/UI
Priority: Medium
Effort: Small
Area:
checklist-page-client.tsx— Checklist pageIssue: The tRPC invalidation block (
Promise.all([task.list, task.getPriorityQueue, dashboard.getForActiveWorkspace])) is copy-pasted across four mutation handlersRecommendation: Extract to a single shared
invalidateTasks()helperType: Frontend cleanup
Priority: Low
Effort: Small
Area:
planning-overview.tsx— TasksCardIssue: Optimistic task toggle has no rollback on error — toggling a task when offline leaves the checkbox permanently in the wrong state until next refetch
Recommendation: Add optimistic update with rollback in the
onErrorhandlerType: Frontend cleanup
Priority: High
Effort: Medium
Area:
events-page-client.tsx— Events pageIssue: RSVP context banner has no dismiss button; appears when
eventIdis in the URL and persists until the user navigates awayRecommendation: Add an
Xdismiss button that clears theeventIdsearch paramType: UX/UI
Priority: Medium
Effort: Small
Area:
sidebar-nav.tsx— SidebarIssue: Collapse preference loaded from
localStoragein auseEffectcauses a visible 168px width layout shift on every page load for users who prefer the collapsed sidebarRecommendation: Set sidebar width via a cookie read server-side, or use a CSS variable injected via a
<script>in<head>before hydration (same pattern as dark mode)Type: UX/UI
Priority: Medium
Effort: Large
Selected Improvement
Fix event card time display to show start time even when no end time is set, and add a
Clockicon.Why This Was Selected
Many real-world wedding events (ceremonies, cocktail hours) have a start time but no defined end time. The old condition completely hid time information for these events, leaving an empty gap where guests and planners expect timing details. The fix is small, zero-risk, immediately visible to all users, and consistent with the existing
Calendar/MapPinrow pattern.Changes Made
{event.startTime && event.endTime && ...}to{event.startTime && ...}{event.endTime ? \– ${event.endTime}` : ''}`Clockicon matching the size/style ofCalendarandMapPiniconsClockto the lucide-react import lineFiles Changed
src/app/(authenicated)/events/_components/event-card.tsxVerification
Checked 1 file in 11ms. No fixes applied.)Future Recommendations
Recommendation: Fix CategoryForm "0" pre-fill when editing a section with no planned budget
Priority: Medium
Effort: Small
Reason not included: Different area (budget), separate concern; would widen the diff unnecessarily
Should become GitHub issue: No — one-line fix, can be the next daily improvement
Recommendation: Add empty state to MilestonesCard when no milestones exist
Priority: Medium
Effort: Small
Reason not included: Dashboard already has multiple open PRs; keeping scope focused
Should become GitHub issue: No — small, self-contained
Recommendation: Extract shared task invalidation helper in checklist-page-client.tsx
Priority: Low
Effort: Small
Reason not included: Frontend cleanup with no user-facing impact; lower priority than UX fixes
Should become GitHub issue: No — minor code quality improvement
Recommendation: Add RSVP context banner dismiss button
Priority: Medium
Effort: Small
Reason not included: Separate screen and concern from this fix
Should become GitHub issue: No — small, self-contained
Recommendation: Fix sidebar collapse layout shift (SSR cookie or head script approach)
Priority: Medium
Effort: Large
Reason not included: Large effort; touches layout infrastructure and server/client boundary
Should become GitHub issue: Yes — cross-cutting, needs careful implementation
Recommendation: Add optimistic update rollback to task toggle on the dashboard
Priority: High
Effort: Medium
Reason not included: Separate component and concern; warrants its own focused PR
Should become GitHub issue: No — medium effort, can be a standalone daily improvement
GitHub Issues Created or Proposed
Proposed issue — sidebar collapse layout shift:
Title:
[Sidebar] Eliminate layout shift when restoring collapsed sidebar preferencelocalStorageis read in auseEffect, so the sidebar always renders expanded first (w-56) and then snaps to collapsed (w-14) after hydration. Users who prefer collapsed sidebar see a 168px width jump on every page load.No issue created today — the sidebar issue is the only one warranting separate tracking, and it is proposed above rather than filed to allow the team to prioritize it alongside other open work.
Generated by Claude Code