Requirements: FR-041 in specs/011-meeting-details-redesign/requirements.md. State model: state-matrix.md in the same directory.
Branch: PRs for this issue target the integration branch feat/meeting-details-v2, not main. Nothing in this epic reaches production until the release PR #3249 merges.
Design: https://claude.ai/design/p/c70cdcac-911f-4337-9d87-3daed9d85f58?file=Meeting+Details.dc.html&via=share
Prototype settings panel: time / viewer / privacy / rsvpTracking / pastAccess / myRsvp / recur / via / pageStatus. Its look and feel differs from the current app on purpose — follow it.
Epic: #1765 · Meetings v2 epic: #1451 · Plan ID: E4-05 · Size: M · Depends on: E0-03, E4-01
Delivery: this ships as part of meeting details V2, side by side with the existing page, behind MEETING_V2_ENABLED_FLAG. Do not modify, refactor or delete the existing meeting details page. V1 stays fully functional and is what untargeted users see. Parent: Meetings v2 epic #1451. Full rules in #1765.
Components: follow the prototype for design, but build it from the existing lfx-* components in app/shared/components/. Extend a wrapper before forking it; create a new component only when the design can't be expressed otherwise, and say so in the PR.
Rewritten 2026-09-09. Was "consolidate past-meeting surfaces onto /meetings/:id". The redirect and the deletion are dropped — /details is now the deliberate admin surface (E0-03). What remains is making the two surfaces consistent and fixing the defects that are wrong on either one.
Scope. Implement the E0-03 split on the public page, and fix the shared defects:
- Public page keeps the read experience; admin-only capabilities are not duplicated onto it.
- Add the organizer-gated entry point to the admin page, if E0-03 decided in favour.
- Fold in the parts of the admin page that belong to the read experience — participants table with voting status, attendance rate bar and its colour thresholds, invited/uninvited filters.
- Do not carry over the permanently-disabled Invite button with
tooltip="Coming soon".
Acceptance criteria
Added 2026-10-05: E0-03 decision (meeting-surface-boundary.md, merged in #3268). This narrows the scope above:
Filed from meeting-details-redesign-implementation-plan.md (revised 2026-09-23).
Design: https://claude.ai/design/p/c70cdcac-911f-4337-9d87-3daed9d85f58?file=Meeting+Details.dc.html&via=share
Epic: #1765 · Meetings v2 epic: #1451 · Plan ID:
E4-05· Size: M · Depends on: E0-03, E4-01Scope. Implement the E0-03 split on the public page, and fix the shared defects:
tooltip="Coming soon".Acceptance criteria
meeting.attended_countand a client-sidefilter(is_attended)disagree.@if (meeting.participant_count)no longer hides the whole stats row when the count is legitimately0./detailsstill pass; the route is not removed or redirected.Added 2026-10-05: E0-03 decision (
meeting-surface-boundary.md, merged in #3268). This narrows the scope above:v1_past_meeting#organizer), on ended meetings only, and usesgetEntityCommands(…, 'details'). There is no new admin → public link.Filed from
meeting-details-redesign-implementation-plan.md(revised 2026-09-23).