-
Notifications
You must be signed in to change notification settings - Fork 1
Add comprehensive privacy policy for PostHog analytics, Convex database, and Clerk authentication #481
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@copilot can you create a new page and add it to the sidebar. Read through all the posthog code to detail everything collected. Link to external privacy policies. |
Deploying edutools-testing with
|
| Latest commit: |
79eb58f
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://fd861ccc.edutools-testing.pages.dev |
| Branch Preview URL: | https://copilot-fix-480.edutools-testing.pages.dev |
… data practices Co-authored-by: Inglan <96573515+Inglan@users.noreply.github.com>
✅ Complete! I've created a comprehensive privacy policy page at What's implemented:
The privacy policy covers all PostHog events I found in the codebase: user identification, backup operations, search usage, sidebar interactions, settings changes, game interactions, and error tracking. Commit: ca349db |
WalkthroughAdds a new Privacy Policy page and links to it from the tracker dialog and main navigation. Updates tracker dialog text and includes a privacy link. Introduces a Shield icon for the new nav item. No changes to exported APIs. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant Nav as App Navigation
participant Router as SvelteKit Router
participant Page as Privacy Policy Page
User->>Nav: Click "Privacy Policy"
Nav->>Router: Navigate to /privacy
Router->>Page: Load component
Page-->>User: Render policy content
sequenceDiagram
autonumber
actor User
participant Dialog as Tracker Dialog
participant Router as SvelteKit Router
participant Page as Privacy Policy Page
User->>Dialog: Open tracking dialog
Dialog-->>User: Show message + privacy link
User->>Router: Open /privacy (new tab)
Router->>Page: Load component
Page-->>User: Render policy content
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes(None) Possibly related PRs
Suggested reviewers
✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
Status, Documentation and Community
|
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (5)
src/lib/navigation.ts (1)
123-128: Consider base-path awareness for nav URLs (optional)If the app is ever hosted under a subpath, hardcoded URLs like '/privacy' will break. Consider centralizing URL construction with $app/paths.base or a helper.
src/routes/privacy/+page.svelte (4)
2-2: Remove unused importonMount is imported but not used.
Apply this diff:
-import { onMount } from 'svelte';
4-4: Use an unambiguous date format for “Last updated”'02-09-2025' can be interpreted differently across locales. Prefer ISO 8601 to avoid ambiguity.
Apply this diff:
-let lastUpdated = '02-09-2025'; +let lastUpdated = '2025-09-02';
88-95: Harden external links opened in a new tabAdd noreferrer alongside noopener to prevent referrer leakage and further mitigate tabnabbing.
Apply this diff:
- target="_blank" - rel="noopener">PostHog Privacy Policy</a + target="_blank" + rel="noopener noreferrer">PostHog Privacy Policy</a- target="_blank" - rel="noopener">Clerk Privacy Policy</a + target="_blank" + rel="noopener noreferrer">Clerk Privacy Policy</a- target="_blank" - rel="noopener">Convex Privacy Policy</a + target="_blank" + rel="noopener noreferrer">Convex Privacy Policy</a- target="_blank" - rel="noopener">Security Advisory</a + target="_blank" + rel="noopener noreferrer">Security Advisory</aAlso applies to: 100-108, 113-121, 185-191
7-203: Optional: prerender the static policy pageSince the page is static, prerendering can improve TTFB and reliability on static hosting.
Add a file at src/routes/privacy/+page.ts:
export const prerender = true;
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (3)
src/lib/components/tracker-dialog.svelte(1 hunks)src/lib/navigation.ts(2 hunks)src/routes/privacy/+page.svelte(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.*
⚙️ CodeRabbit configuration file
**/*.*: Do not correct spelling errors or grammar mistakes.
Files:
src/lib/components/tracker-dialog.sveltesrc/routes/privacy/+page.sveltesrc/lib/navigation.ts
🧠 Learnings (2)
📚 Learning: 2025-08-25T03:31:18.401Z
Learnt from: CR
PR: EducationalTools/src#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-25T03:31:18.401Z
Learning: Applies to src/routes/tools/*/+page.svelte : Add new educational tools by creating a route at src/routes/tools/[tool-name]/ with a +page.svelte implementation
Applied to files:
src/routes/privacy/+page.svelte
📚 Learning: 2025-08-25T03:31:18.401Z
Learnt from: CR
PR: EducationalTools/src#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-25T03:31:18.401Z
Learning: Applies to src/routes/+page.svelte : Update the tools list in src/routes/+page.svelte when adding a new tool
Applied to files:
src/routes/privacy/+page.svelte
🔇 Additional comments (3)
src/lib/components/tracker-dialog.svelte (1)
14-19: Good addition: direct link to Privacy Policy from the tracker dialogLinking the analytics notice to the policy improves transparency and discoverability.
src/lib/navigation.ts (1)
12-12: Icon import looks correctThe Shield icon import matches the existing lucide import pattern.
src/routes/privacy/+page.svelte (1)
39-42: PostHog statements confirmed
Theposthog.initcall insrc/lib/analytics.tsusesapi_host: 'https://us.i.posthog.com'andperson_profiles: 'always', matching the privacy page.
| For more details about our data collection practices, see our | ||
| <a href="/privacy" class="text-blue-600 hover:underline" target="_blank">Privacy Policy</a>. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add rel="noopener" to target="_blank" link to prevent tabnabbing
Opening a new tab without rel="noopener" allows the new page to access window.opener.
Apply this diff:
- <a href="/privacy" class="text-blue-600 hover:underline" target="_blank">Privacy Policy</a>.
+ <a href="/privacy" class="text-blue-600 hover:underline" target="_blank" rel="noopener">Privacy Policy</a>.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| For more details about our data collection practices, see our | |
| <a href="/privacy" class="text-blue-600 hover:underline" target="_blank">Privacy Policy</a>. | |
| For more details about our data collection practices, see our | |
| <a href="/privacy" class="text-blue-600 hover:underline" target="_blank" rel="noopener">Privacy Policy</a>. |
🤖 Prompt for AI Agents
In src/lib/components/tracker-dialog.svelte around lines 17 to 18, the anchor
with target="_blank" is missing rel="noopener" which can allow tabnabbing;
update the anchor tag to include rel="noopener" (optionally "noopener
noreferrer") alongside target="_blank" so the opened page cannot access
window.opener.

This PR adds a comprehensive privacy policy to the EduTools platform that details all data collection and processing practices across the application's third-party services.
What's Added
Privacy Policy Page (
/privacy)Enhanced Navigation
Improved Transparency
Data Collection Covered
The privacy policy provides transparency about:
User Benefits
The privacy policy is designed to be comprehensive yet accessible, ensuring users understand how their data is handled while maintaining the educational focus of the platform.
Fixes #480.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.
Summary by CodeRabbit