Skip to content

Link team names to their team; render the privacy page on the server - #368

Merged
hturnbull93 merged 2 commits into
mainfrom
team-link-and-privacy-ssr
Oct 22, 2026
Merged

hturnbull93 merged 2 commits into
mainfrom
team-link-and-privacy-ssr

Conversation

@hturnbull93

Copy link
Copy Markdown
Collaborator

Split out of the stack so these two low-risk changes can ship now. They replace #355 and #363.

Screenshots: #355 https://fedora.taila91c66.ts.net:8444/docs/20261021-133615-pr-355-team-name-links-to-the-team.html · #363 https://fedora.taila91c66.ts.net:8444/docs/20261021-141644-pr-363-server-components-proof-of-concept.html

  • Team name links to its team (closes Show projects on team page #287): on project cards and the project page, the team name is a link to /teams/<id>. There's an e2e test in 29-teams for it.
  • Privacy page rendered on the server (part of Refactor Server vs Client Component architecture #110): /privacy is a server component, so the policy text is in the served HTML. Two small client parts in app/privacy/account-actions.tsx handle the signed-in "Download my data" card and the signed-out log-in prompt. app/privacy/layout.tsx is gone, and the title and description are in page.tsx. The page looks the same as before. The route's own JS goes from 12.8 KB to 1.9 KB.
  • Write-up: docs/server-components.md covers the sign-in constraint (the session is a localStorage token the server never sees), the recommended pattern, and why moving the session to an HttpOnly cookie is what would make Refactor Server vs Client Component architecture #110 pay off.

The export description keeps main's wording here; #359 updates it in the stack.

Testing: npm run check-all passes: 1497 unit tests at 100% line coverage, and 263 e2e tests.

🤖 Generated with Claude Code

hturnbull93 and others added 2 commits October 22, 2026 16:10
On the project card and the project page header, the team name opens
/teams/<id>, keeping the plain meta-line look with an underline on hover.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The policy is the same for every reader, so the page is now a server
component with two small client islands for the signed-in export and the
signed-out log-in prompt. The text arrives in the HTML instead of after
the session loads, the route's own JS drops from 12.8 kB to 1.9 kB raw
(4.3 kB to 1.1 kB gzip), and the title and description move into
page.tsx. docs/server-components.md records the auth constraint, the
pattern and which pages would benefit (#110).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hturnbull93
hturnbull93 merged commit 648c5b2 into main Oct 22, 2026
3 checks passed
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.

Show projects on team page

1 participant