diff --git a/legal/privacy.md b/legal/privacy.md deleted file mode 100644 --- a/legal/privacy.md +++ /dev/null @@ -1,158 +0,0 @@ -# Privacy Policy - -**Last updated:** January 15, 2025 - -This Privacy Policy describes how Tangled ("we," "us," or "our") -collects, uses, and shares your personal information when you use our -platform and services (the "Service"). - -## 1. Information We Collect - -### Account Information - -When you create an account, we collect: - -- Your chosen username -- Email address -- Profile information you choose to provide -- Authentication data - -### Content and Activity - -We store: - -- Code repositories and associated metadata -- Issues, pull requests, and comments -- Activity logs and usage patterns -- Public keys for authentication - -## 2. Data Location and Hosting - -### EU Data Hosting - -**All Tangled service data is hosted within the European Union.** -Specifically: - -- **Personal Data Servers (PDS):** Accounts hosted on Tangled PDS - (*.tngl.sh) are located in Finland -- **Application Data:** All other service data is stored on EU-based - servers -- **Data Processing:** All data processing occurs within EU - jurisdiction - -### External PDS Notice - -**Important:** If your account is hosted on Bluesky's PDS or other -self-hosted Personal Data Servers (not *.tngl.sh), we do not control -that data. The data protection, storage location, and privacy -practices for such accounts are governed by the respective PDS -provider's policies, not this Privacy Policy. We only control data -processing within our own services and infrastructure. - -## 3. Third-Party Data Processors - -We only share your data with the following third-party processors: - -### Resend (Email Services) - -- **Purpose:** Sending transactional emails (account verification, - notifications) -- **Data Shared:** Email address and necessary message content - -### Cloudflare (Image Caching) - -- **Purpose:** Caching and optimizing image delivery -- **Data Shared:** Public images and associated metadata for caching - purposes - -### Posthog (Usage Metrics Tracking) - -- **Purpose:** Tracking usage and platform metrics -- **Data Shared:** Anonymous usage data, IP addresses, DIDs, and browser - information - -## 4. How We Use Your Information - -We use your information to: - -- Provide and maintain the Service -- Process your transactions and requests -- Send you technical notices and support messages -- Improve and develop new features -- Ensure security and prevent fraud -- Comply with legal obligations - -## 5. Data Sharing and Disclosure - -We do not sell, trade, or rent your personal information. We may share -your information only in the following circumstances: - -- With the third-party processors listed above -- When required by law or legal process -- To protect our rights, property, or safety, or that of our users -- In connection with a merger, acquisition, or sale of assets (with - appropriate protections) - -## 6. Data Security - -We implement appropriate technical and organizational measures to -protect your personal information against unauthorized access, -alteration, disclosure, or destruction. However, no method of -transmission over the Internet is 100% secure. - -## 7. Data Retention - -We retain your personal information for as long as necessary to provide -the Service and fulfill the purposes outlined in this Privacy Policy, -unless a longer retention period is required by law. - -## 8. Your Rights - -Under applicable data protection laws, you have the right to: - -- Access your personal information -- Correct inaccurate information -- Request deletion of your information -- Object to processing of your information -- Data portability -- Withdraw consent (where applicable) - -## 9. Cookies and Tracking - -We use cookies and similar technologies to: - -- Maintain your login session -- Remember your preferences -- Analyze usage patterns to improve the Service - -You can control cookie settings through your browser preferences. - -## 10. Children's Privacy - -The Service is not intended for children under 16 years of age. We do -not knowingly collect personal information from children under 16. If -we become aware that we have collected such information, we will take -steps to delete it. - -## 11. International Data Transfers - -While all our primary data processing occurs within the EU, some of our -third-party processors may process data outside the EU. When this -occurs, we ensure appropriate safeguards are in place, such as Standard -Contractual Clauses or adequacy decisions. - -## 12. Changes to This Privacy Policy - -We may update this Privacy Policy from time to time. We will notify you -of any changes by posting the new Privacy Policy on this page and -updating the "Last updated" date. - -## 13. Contact Information - -If you have any questions about this Privacy Policy or wish to exercise -your rights, please contact us through our platform or via email. - ---- - -This Privacy Policy complies with the EU General Data Protection -Regulation (GDPR) and other applicable data protection laws. diff --git a/legal/terms.md b/legal/terms.md deleted file mode 100644 --- a/legal/terms.md +++ /dev/null @@ -1,109 +0,0 @@ -# Terms of Service - -**Last updated:** January 15, 2025 - -Welcome to Tangled. These Terms of Service ("Terms") govern your access -to and use of the Tangled platform and services (the "Service") -operated by us ("Tangled," "we," "us," or "our"). - -## 1. Acceptance of Terms - -By accessing or using our Service, you agree to be bound by these Terms. -If you disagree with any part of these terms, then you may not access -the Service. - -## 2. Account Registration - -To use certain features of the Service, you must register for an -account. You agree to provide accurate, current, and complete -information during the registration process and to update such -information to keep it accurate, current, and complete. - -## 3. Account Termination - -> **Important Notice** -> -> **We reserve the right to terminate, suspend, or restrict access to -> your account at any time, for any reason, or for no reason at all, at -> our sole discretion.** This includes, but is not limited to, -> termination for violation of these Terms, inappropriate conduct, spam, -> abuse, or any other behavior we deem harmful to the Service or other -> users. -> -> Account termination may result in the loss of access to your -> repositories, data, and other content associated with your account. We -> are not obligated to provide advance notice of termination, though we -> may do so in our discretion. - -## 4. Acceptable Use - -You agree not to use the Service to: - -- Violate any applicable laws or regulations -- Infringe upon the rights of others -- Upload, store, or share content that is illegal, harmful, threatening, - abusive, harassing, defamatory, vulgar, obscene, or otherwise - objectionable -- Engage in spam, phishing, or other deceptive practices -- Attempt to gain unauthorized access to the Service or other users' - accounts -- Interfere with or disrupt the Service or servers connected to the - Service - -## 5. Content and Intellectual Property - -You retain ownership of the content you upload to the Service. By -uploading content, you grant us a non-exclusive, worldwide, royalty-free -license to use, reproduce, modify, and distribute your content as -necessary to provide the Service. - -## 6. Privacy - -Your privacy is important to us. Please review our [Privacy -Policy](/privacy), which also governs your use of the Service. - -## 7. Disclaimers - -The Service is provided on an "AS IS" and "AS AVAILABLE" basis. We make -no warranties, expressed or implied, and hereby disclaim and negate all -other warranties including without limitation, implied warranties or -conditions of merchantability, fitness for a particular purpose, or -non-infringement of intellectual property or other violation of rights. - -## 8. Limitation of Liability - -In no event shall Tangled, nor its directors, employees, partners, -agents, suppliers, or affiliates, be liable for any indirect, -incidental, special, consequential, or punitive damages, including -without limitation, loss of profits, data, use, goodwill, or other -intangible losses, resulting from your use of the Service. - -## 9. Indemnification - -You agree to defend, indemnify, and hold harmless Tangled and its -affiliates, officers, directors, employees, and agents from and against -any and all claims, damages, obligations, losses, liabilities, costs, -or debt, and expenses (including attorney's fees). - -## 10. Governing Law - -These Terms shall be interpreted and governed by the laws of Finland, -without regard to its conflict of law provisions. - -## 11. Changes to Terms - -We reserve the right to modify or replace these Terms at any time. If a -revision is material, we will try to provide at least 30 days notice -prior to any new terms taking effect. - -## 12. Contact Information - -If you have any questions about these Terms of Service, please contact -us through our platform or via email. - ---- - -These terms are effective as of the last updated date shown above and -will remain in effect except with respect to any changes in their -provisions in the future, which will be in effect immediately after -being posted on this page. \ No newline at end of file diff --git a/appview/pages/pages.go b/appview/pages/pages.go --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -38,7 +38,7 @@ "github.com/go-git/go-git/v5/plumbing/object" ) -//go:embed templates/* static +//go:embed templates/* static legal var Files embed.FS type Pages struct { @@ -242,7 +242,14 @@ func (p *Pages) TermsOfService(w io.Writer, params TermsOfServiceParams) error { filename := "terms.md" filePath := filepath.Join("legal", filename) - markdownBytes, err := os.ReadFile(filePath) + + file, err := p.embedFS.Open(filePath) + if err != nil { + return fmt.Errorf("failed to read %s: %w", filename, err) + } + defer file.Close() + + markdownBytes, err := io.ReadAll(file) if err != nil { return fmt.Errorf("failed to read %s: %w", filename, err) } @@ -263,7 +270,14 @@ func (p *Pages) PrivacyPolicy(w io.Writer, params PrivacyPolicyParams) error { filename := "privacy.md" filePath := filepath.Join("legal", filename) - markdownBytes, err := os.ReadFile(filePath) + + file, err := p.embedFS.Open(filePath) + if err != nil { + return fmt.Errorf("failed to read %s: %w", filename, err) + } + defer file.Close() + + markdownBytes, err := io.ReadAll(file) if err != nil { return fmt.Errorf("failed to read %s: %w", filename, err) } diff --git a/appview/pages/legal/privacy.md b/appview/pages/legal/privacy.md new file mode 100644 --- /dev/null +++ b/appview/pages/legal/privacy.md @@ -0,0 +1,158 @@ +# Privacy Policy + +**Last updated:** September 26, 2025 + +This Privacy Policy describes how Tangled ("we," "us," or "our") +collects, uses, and shares your personal information when you use our +platform and services (the "Service"). + +## 1. Information We Collect + +### Account Information + +When you create an account, we collect: + +- Your chosen username +- Email address +- Profile information you choose to provide +- Authentication data + +### Content and Activity + +We store: + +- Code repositories and associated metadata +- Issues, pull requests, and comments +- Activity logs and usage patterns +- Public keys for authentication + +## 2. Data Location and Hosting + +### EU Data Hosting + +**All Tangled service data is hosted within the European Union.** +Specifically: + +- **Personal Data Servers (PDS):** Accounts hosted on Tangled PDS + (*.tngl.sh) are located in Finland +- **Application Data:** All other service data is stored on EU-based + servers +- **Data Processing:** All data processing occurs within EU + jurisdiction + +### External PDS Notice + +**Important:** If your account is hosted on Bluesky's PDS or other +self-hosted Personal Data Servers (not *.tngl.sh), we do not control +that data. The data protection, storage location, and privacy +practices for such accounts are governed by the respective PDS +provider's policies, not this Privacy Policy. We only control data +processing within our own services and infrastructure. + +## 3. Third-Party Data Processors + +We only share your data with the following third-party processors: + +### Resend (Email Services) + +- **Purpose:** Sending transactional emails (account verification, + notifications) +- **Data Shared:** Email address and necessary message content + +### Cloudflare (Image Caching) + +- **Purpose:** Caching and optimizing image delivery +- **Data Shared:** Public images and associated metadata for caching + purposes + +### Posthog (Usage Metrics Tracking) + +- **Purpose:** Tracking usage and platform metrics +- **Data Shared:** Anonymous usage data, IP addresses, DIDs, and browser + information + +## 4. How We Use Your Information + +We use your information to: + +- Provide and maintain the Service +- Process your transactions and requests +- Send you technical notices and support messages +- Improve and develop new features +- Ensure security and prevent fraud +- Comply with legal obligations + +## 5. Data Sharing and Disclosure + +We do not sell, trade, or rent your personal information. We may share +your information only in the following circumstances: + +- With the third-party processors listed above +- When required by law or legal process +- To protect our rights, property, or safety, or that of our users +- In connection with a merger, acquisition, or sale of assets (with + appropriate protections) + +## 6. Data Security + +We implement appropriate technical and organizational measures to +protect your personal information against unauthorized access, +alteration, disclosure, or destruction. However, no method of +transmission over the Internet is 100% secure. + +## 7. Data Retention + +We retain your personal information for as long as necessary to provide +the Service and fulfill the purposes outlined in this Privacy Policy, +unless a longer retention period is required by law. + +## 8. Your Rights + +Under applicable data protection laws, you have the right to: + +- Access your personal information +- Correct inaccurate information +- Request deletion of your information +- Object to processing of your information +- Data portability +- Withdraw consent (where applicable) + +## 9. Cookies and Tracking + +We use cookies and similar technologies to: + +- Maintain your login session +- Remember your preferences +- Analyze usage patterns to improve the Service + +You can control cookie settings through your browser preferences. + +## 10. Children's Privacy + +The Service is not intended for children under 16 years of age. We do +not knowingly collect personal information from children under 16. If +we become aware that we have collected such information, we will take +steps to delete it. + +## 11. International Data Transfers + +While all our primary data processing occurs within the EU, some of our +third-party processors may process data outside the EU. When this +occurs, we ensure appropriate safeguards are in place, such as Standard +Contractual Clauses or adequacy decisions. + +## 12. Changes to This Privacy Policy + +We may update this Privacy Policy from time to time. We will notify you +of any changes by posting the new Privacy Policy on this page and +updating the "Last updated" date. + +## 13. Contact Information + +If you have any questions about this Privacy Policy or wish to exercise +your rights, please contact us through our platform or via email. + +--- + +This Privacy Policy complies with the EU General Data Protection +Regulation (GDPR) and other applicable data protection laws. diff --git a/appview/pages/legal/terms.md b/appview/pages/legal/terms.md new file mode 100644 --- /dev/null +++ b/appview/pages/legal/terms.md @@ -0,0 +1,109 @@ +# Terms of Service + +**Last updated:** September 26, 2025 + +Welcome to Tangled. These Terms of Service ("Terms") govern your access +to and use of the Tangled platform and services (the "Service") +operated by us ("Tangled," "we," "us," or "our"). + +## 1. Acceptance of Terms + +By accessing or using our Service, you agree to be bound by these Terms. +If you disagree with any part of these terms, then you may not access +the Service. + +## 2. Account Registration + +To use certain features of the Service, you must register for an +account. You agree to provide accurate, current, and complete +information during the registration process and to update such +information to keep it accurate, current, and complete. + +## 3. Account Termination + +> **Important Notice** +> +> **We reserve the right to terminate, suspend, or restrict access to +> your account at any time, for any reason, or for no reason at all, at +> our sole discretion.** This includes, but is not limited to, +> termination for violation of these Terms, inappropriate conduct, spam, +> abuse, or any other behavior we deem harmful to the Service or other +> users. +> +> Account termination may result in the loss of access to your +> repositories, data, and other content associated with your account. We +> are not obligated to provide advance notice of termination, though we +> may do so in our discretion. + +## 4. Acceptable Use + +You agree not to use the Service to: + +- Violate any applicable laws or regulations +- Infringe upon the rights of others +- Upload, store, or share content that is illegal, harmful, threatening, + abusive, harassing, defamatory, vulgar, obscene, or otherwise + objectionable +- Engage in spam, phishing, or other deceptive practices +- Attempt to gain unauthorized access to the Service or other users' + accounts +- Interfere with or disrupt the Service or servers connected to the + Service + +## 5. Content and Intellectual Property + +You retain ownership of the content you upload to the Service. By +uploading content, you grant us a non-exclusive, worldwide, royalty-free +license to use, reproduce, modify, and distribute your content as +necessary to provide the Service. + +## 6. Privacy + +Your privacy is important to us. Please review our [Privacy +Policy](/privacy), which also governs your use of the Service. + +## 7. Disclaimers + +The Service is provided on an "AS IS" and "AS AVAILABLE" basis. We make +no warranties, expressed or implied, and hereby disclaim and negate all +other warranties including without limitation, implied warranties or +conditions of merchantability, fitness for a particular purpose, or +non-infringement of intellectual property or other violation of rights. + +## 8. Limitation of Liability + +In no event shall Tangled, nor its directors, employees, partners, +agents, suppliers, or affiliates, be liable for any indirect, +incidental, special, consequential, or punitive damages, including +without limitation, loss of profits, data, use, goodwill, or other +intangible losses, resulting from your use of the Service. + +## 9. Indemnification + +You agree to defend, indemnify, and hold harmless Tangled and its +affiliates, officers, directors, employees, and agents from and against +any and all claims, damages, obligations, losses, liabilities, costs, +or debt, and expenses (including attorney's fees). + +## 10. Governing Law + +These Terms shall be interpreted and governed by the laws of Finland, +without regard to its conflict of law provisions. + +## 11. Changes to Terms + +We reserve the right to modify or replace these Terms at any time. If a +revision is material, we will try to provide at least 30 days notice +prior to any new terms taking effect. + +## 12. Contact Information + +If you have any questions about these Terms of Service, please contact +us through our platform or via email. + +--- + +These terms are effective as of the last updated date shown above and +will remain in effect except with respect to any changes in their +provisions in the future, which will be in effect immediately after +being posted on this page.