Conversation
All dashboard pages set 'Page | Your Wedding Website' as a hardcoded title, bypassing the root layout's '%s | OSWP' template and labelling planner pages with the same name as the guest-facing public site. Fix by setting only the short page name so the template produces 'Guest List | OSWP', 'Budget | OSWP', etc. Remove the redundant per-page icon declarations already covered by the root layout. Add missing metadata to the Dashboard and Settings pages. Rename the misnamed DashboardPage export in guest-list/page.tsx to GuestListPage.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
This was referenced Sep 3, 2026
This branch had an error being 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
📝 TLDR
Fix all dashboard page metadata titles to use the root layout's
%s | OSWPtemplate instead of the hardcodedPage | Your Wedding Websitepattern.📝 Description
Every dashboard page (Budget, Checklist, Events, Guest List, Vendors, Website) hardcodes its full browser tab title as
"Budget | Your Wedding Website". This has two problems:title.template: '%s | OSWP', which is supposed to provide consistent suffix branding across all authenticated pages. Hardcoding the full string bypasses this entirely.Additionally, the
DashboardandSettingspages had nometadataexport at all, so they fell back to the root layout's default title — both showed as"OSWP — The Open Source Wedding Platform"in browser tabs regardless of which page the user was on.This Change
| Your Wedding Websitesuffix from all 6 dashboard pages, replacing with the short page name so the root template produces"Guest List | OSWP","Budget | OSWP", etc.iconsdeclaration (already set in the root layout and duplicated on every page).metadataexports todashboard/page.tsxandsettings/page.tsx.DashboardPagedefault export inguest-list/page.tsxtoGuestListPage(copy-paste artifact).🧪 Testing
🧪 How to test as a user
"Page Name | OSWP"instead of"Page Name | Your Wedding Website".📚 Documentation
🎨 Style and code quality
📦 Dependencies
Daily Product Improvement
Recommendations Reviewed
Area: All authenticated dashboard pages (
budget,checklist,events,guest-list,vendors,website,dashboard,settings)Issue: Page titles are hardcoded as
"Page | Your Wedding Website"— confusing admin tabs with the public guest site and bypassing the root layout's title templateRecommendation: Use short page name so the root template produces
"Page | OSWP"consistentlyType: Frontend cleanup / UX
Priority: Medium
Effort: Small
Area:
src/app/layout.tsx(lines 97–98)Issue: Both
sonnerand shadcn<Toaster />are mounted simultaneously — can cause overlapping toast notificationsRecommendation: Remove the shadcn
<Toaster />sincesonneris used exclusively in all non-legacy componentsType: Frontend cleanup
Priority: Medium
Effort: Small
Note: Already addressed in PR #250
Area:
src/components/guest-list/guest-search-filter.tsx(lines 55–64)Issue: Five consecutive
eslint-disable-next-line react-hooks/set-state-in-effectsuppressions inside oneuseEffect— symptom of managing too many independent filter state slicesRecommendation: Combine filter state into a single object managed by
useReducer; the reset-on-event-change effect then sets one value, eliminating all suppressions and making state transitions explicitType: Frontend cleanup
Priority: Medium
Effort: Medium
Area:
src/app/(authenicated)/guest-list/page.tsx(line 14)Issue: Server component export is named
DashboardPagedespite being the Guest List page (copy-paste artifact)Recommendation: Rename to
GuestListPageType: Frontend cleanup
Priority: Low
Effort: Small
Note: Included in this PR alongside the metadata fix
Area:
src/components/home/names-form.tsx+ Prisma schemaIssue: Onboarding form uses "Groom's Information" / "Bride's Information" labels, which excludes same-sex couples; schema uses
groomFirstName/brideFirstNamethroughoutRecommendation: Rename schema fields to
partner1FirstName/partner2FirstNameand update labels to neutral language (e.g. "Partner 1", "Partner 2")Type: Product flow / UX
Priority: High
Effort: Large
Area:
src/components/home/non-authenticated-view.tsx(lines 27–35)Issue: Marketing homepage advertises "Seating & Logistics" with drag-and-drop and auto-suggest — a feature that does not exist anywhere in the codebase
Recommendation: Remove the feature callout until the feature is built, or add a "Coming soon" badge
Type: Product flow
Priority: High
Effort: Small (removing the copy) / Large (building the feature)
Selected Improvement
Fix all authenticated dashboard page metadata titles to use the root layout's
%s | OSWPtemplate, add missing metadata to Dashboard and Settings pages, remove redundant per-page icon declarations, and fix the misnamedDashboardPageexport inguest-list/page.tsx.Why This Was Selected
The confusing
"Your Wedding Website"suffix in browser tabs is a real UX problem for power users with multiple tabs open — it makes planner pages indistinguishable from the public guest site by name. The fix is purely mechanical (string changes in metadata exports), zero-risk, and immediately improves every page's identity in browser tabs, bookmarks, and screen reader announcements. The toast cleanup (#250) and old dashboard removal (#231) are already covered by open PRs, so this was the next clearest small win.Changes Made
titlein 6 page metadata exports from'Page | Your Wedding Website'to'Page'so the root template appliesiconsfield from those 6 page metadata objects (already set in root layout)export const metadatatodashboard/page.tsx(title: 'Dashboard')export const metadatatosettings/page.tsx(title: 'Settings')DashboardPagetoGuestListPageinguest-list/page.tsxFiles Changed
src/app/(authenicated)/budget/page.tsxsrc/app/(authenicated)/checklist/page.tsxsrc/app/(authenicated)/dashboard/page.tsxsrc/app/(authenicated)/events/page.tsxsrc/app/(authenicated)/guest-list/page.tsxsrc/app/(authenicated)/settings/page.tsxsrc/app/(authenicated)/vendors/page.tsxsrc/app/(authenicated)/website/page.tsxVerification
tsc --noEmit) — passes, no new errorstitle.template: '%s | OSWP'is set insrc/app/layout.tsx(line 44-47)Future Recommendations
Non-inclusive partner labels in onboarding
groomFirstName/brideFirstNameschema fields topartner1FirstName/partner2FirstNameand update all UI labels to gender-neutral languageAdvertised-but-unimplemented Seating & Logistics feature on marketing homepage
guest-search-filter.tsx filter state refactor
useReducerto eliminate 5 eslint-disable suppressions and make state transitions explicitGitHub Issues Created or Proposed
No GitHub issues were created in this run. The two High-priority Large items (non-inclusive labels, advertised-but-missing seating feature) warrant separate issues but require product/design input before implementation. Issues will be proposed in a follow-up if the team confirms they want tracking.
Generated by Claude Code