Skip to content

Feat/project page comments#76

Closed
dekanbro wants to merge 4 commits into
mainfrom
feat/project-page-comments
Closed

Feat/project page comments#76
dekanbro wants to merge 4 commits into
mainfrom
feat/project-page-comments

Conversation

@dekanbro

@dekanbro dekanbro commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 522ac732-9579-4b4b-86e0-f2bfb26a8e51

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/project-page-comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds authenticated-only commenting on project detail pages, while also introducing shared search/pagination controls for several frontend list pages and upgrading the email verification template to a consistent transactional email layout.

Changes:

  • Add project comments UI (authenticated users only) and tighten Comments collection access to enforce parent project visibility on create/read.
  • Introduce shared PortalListControls (search + pagination) and apply it to Projects, Members, and Events list pages.
  • Replace the verify-email HTML with a reusable transactional email renderer; update E2E expectations and seed session timestamps.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/e2e/app.spec.ts Extends E2E coverage for project comments access and aligns email verification text assertions.
src/utilities/transactionalEmail.ts Adds a reusable HTML email renderer with HTML escaping.
src/endpoints/seed/portal.ts Updates seeded “Cohort Project Spike Sync” timestamps (currently hard-coded far-future).
src/endpoints/seed/index.ts Updates seeded “Cohort Project Spike Sync” timestamps (currently hard-coded far-future).
src/collections/Comments.ts Adds project-visibility-aware read filtering and project-access enforcement on comment creation.
src/app/(frontend)/projects/page.tsx Adds server-side search + pagination for published projects.
src/app/(frontend)/projects/[slug]/page.tsx Adds the Comments section to project detail pages for authenticated users.
src/app/(frontend)/members/page.tsx Adds server-side search + pagination for the member directory.
src/app/(frontend)/members/MembersDirectory.tsx Removes client-side text search to rely on server-side query + keeps taxonomy filters.
src/app/(frontend)/events/page.tsx Adds search + pagination but now computes live/upcoming/past from a paginated slice.
src/app/(frontend)/api/users/verify-email/route.ts Switches verification email HTML to renderTransactionalEmail.
src/app/(frontend)/_components/PortalListControls.tsx Adds shared search form + pagination UI/helpers.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +79 to 83
const events = await getEvents(user, { page, query })
const now = Date.now()
const live = events.filter((event) => isLiveEvent(event, now))
const upcoming = events.filter(
const live = events.docs.filter((event) => isLiveEvent(event, now))
const upcoming = events.docs.filter(
(event) => !isLiveEvent(event, now) && new Date(event.startsAt).getTime() >= now,
Comment on lines +121 to +125
return (
<Link aria-current={active ? 'page' : undefined} className={className} href={href}>
{children}
</Link>
)
Comment on lines +22 to 26
// Event and project comments inherit parent visibility because those records can be public,
// authenticated, member-only, or admin-only.
const visibleEventIDs = await getVisibleEventIDs(req)
const visibleProjectIDs = await getVisibleProjectIDs(req)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants