Skip to content

Commit dc5ff45

Browse files
authored
Merge pull request LF-Decentralized-Trust-labs#222 from alveoli-app/main
fixed two issues
2 parents 6acf5b6 + 70430a5 commit dc5ff45

File tree

7 files changed

+249
-5
lines changed

7 files changed

+249
-5
lines changed

frontend/src/middleware/auth/auth-guard.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ export default async function ({
6262
return;
6363
}
6464

65-
if (!currentUser.acceptedTermsAndPrivacy) {
65+
// Allow access to terms and privacy pages without checking acceptance
66+
const isTermsOrPrivacyPage = to.name === 'terms' || to.name === 'privacy' || to.path === '/auth/terms-and-privacy';
67+
68+
if (!currentUser.acceptedTermsAndPrivacy && !isTermsOrPrivacyPage) {
6669
router.push({ path: '/auth/terms-and-privacy' });
6770
return;
6871
}

frontend/src/modules/auth/auth-routes.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ const PasswordResetPage = () => import('@/modules/auth/pages/password-reset-page
1414
const VerifyEmailPage = () => import('@/modules/auth/pages/verify-email-page.vue');
1515
const InvitationPage = () => import('@/modules/auth/pages/invitation-page.vue');
1616
const TermsAndPrivacyPage = () => import('@/modules/auth/pages/terms-and-privacy.vue');
17+
const TermsPage = () => import('@/modules/auth/pages/terms-page.vue');
18+
const PrivacyPage = () => import('@/modules/auth/pages/privacy-page.vue');
1719
const EmptyPermissionsPage = () => import('@/modules/auth/pages/empty-permissions-page.vue');
1820

1921
export default [
@@ -76,6 +78,18 @@ export default [
7678
component: TermsAndPrivacyPage,
7779
meta: { title: 'Terms of service and privacy policy' },
7880
},
81+
{
82+
name: 'terms',
83+
path: 'terms',
84+
component: TermsPage,
85+
meta: { title: 'Terms of Service' },
86+
},
87+
{
88+
name: 'privacy',
89+
path: 'privacy',
90+
component: PrivacyPage,
91+
meta: { title: 'Privacy Policy' },
92+
},
7993
],
8094
},
8195
{
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<template>
2+
<div class="min-h-screen bg-black flex flex-col items-center px-4 py-12 relative overflow-y-auto selection:bg-orange-500/30">
3+
4+
<div class="fixed inset-0 bg-[linear-gradient(to_right,#27272a_1px,transparent_1px),linear-gradient(to_bottom,#27272a_1px,transparent_1px)] bg-[size:4rem_4rem] [mask-image:radial-gradient(ellipse_60%_60%_at_50%_50%,#000_70%,transparent_100%)] opacity-20 pointer-events-none"></div>
5+
6+
<div class="relative w-full max-w-4xl z-10">
7+
8+
<div class="mb-8 text-center flex flex-col items-center">
9+
<div class="flex items-center gap-2 mb-3">
10+
<span class="text-white font-sans text-2xl font-bold tracking-tight">GitMesh</span>
11+
</div>
12+
13+
<h1 class="text-white font-sans text-3xl font-bold tracking-tight mb-2">
14+
<span class="text-orange-500">/</span>privacy_policy
15+
</h1>
16+
<p class="text-zinc-400 text-sm font-mono">
17+
Last Updated: December 27, 2025
18+
</p>
19+
</div>
20+
21+
<div class="bg-zinc-900/20 border border-zinc-700 p-8 mb-8">
22+
<div class="prose prose-invert prose-zinc max-w-none">
23+
<div class="text-zinc-300 leading-relaxed space-y-8">
24+
25+
<section class="space-y-4">
26+
<h2 class="text-orange-500 text-2xl font-bold font-sans mb-6">Privacy Policy</h2>
27+
28+
<p class="text-zinc-400 text-sm italic pl-4 border-l-2 border-zinc-700">Scope: GitMesh Community and Enterprise Operations</p>
29+
30+
<div class="space-y-6">
31+
<div>
32+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">I. Introduction</h3>
33+
<p class="text-zinc-400 text-sm leading-relaxed pl-4">
34+
Alveoli ("we," "us," or "our") is committed to protecting the privacy of our users while leveraging data to build the next generation of AI-powered collaboration tools. This policy outlines how we collect, process, and secure data across our platforms.
35+
</p>
36+
</div>
37+
38+
<div>
39+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">II. Information Collection: Community Edition (CE)</h3>
40+
<p class="text-zinc-400 text-sm leading-relaxed pl-4 mb-3">
41+
For participants in the open-source project, we collect:
42+
</p>
43+
<ul class="text-zinc-400 text-sm space-y-2 pl-8 list-disc">
44+
<li><strong class="text-zinc-300">Identity Data:</strong> GitHub usernames, public profile information, and email addresses.</li>
45+
<li><strong class="text-zinc-300">Contribution Data:</strong> Commit history, pull request metadata, code review comments, and governance activity.</li>
46+
<li><strong class="text-zinc-300">Purpose:</strong> To manage the tiered contributor registry and ensure transparency in the LFDT ecosystem.</li>
47+
</ul>
48+
</div>
49+
50+
<div>
51+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">III. Information Collection: Enterprise Edition (EE)</h3>
52+
<p class="text-zinc-400 text-sm leading-relaxed pl-4 mb-3">
53+
To provide superior performance, security, and AI-driven insights, GitMesh EE collects comprehensive telemetry and usage data. This includes:
54+
</p>
55+
<ul class="text-zinc-400 text-sm space-y-2 pl-8 list-disc">
56+
<li><strong class="text-zinc-300">Operational Metadata:</strong> System configurations, repository sizes, deployment environments, and integration logs.</li>
57+
<li><strong class="text-zinc-300">Usage Analytics:</strong> Interaction patterns with AI features, feature adoption rates, and performance benchmarks.</li>
58+
<li><strong class="text-zinc-300">Technical Diagnostics:</strong> Crash reports, error logs, latency metrics, and resource utilization.</li>
59+
<li><strong class="text-zinc-300">Purpose:</strong> This data is utilized for Deep System Optimization, the training of proprietary AI models for collaboration improvement, and proactive technical support.</li>
60+
</ul>
61+
</div>
62+
63+
<div>
64+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">IV. Data Commercialization and Third-Party Sharing</h3>
65+
<p class="text-zinc-400 text-sm leading-relaxed pl-4 mb-3">
66+
GitMesh maintains a zero-commercialization policy regarding user data.
67+
</p>
68+
<ul class="text-zinc-400 text-sm space-y-2 pl-8 list-disc">
69+
<li><strong class="text-zinc-300">No Sale of Data:</strong> We do not sell, rent, or trade your personal or operational data to third-party advertisers or data brokers.</li>
70+
<li><strong class="text-zinc-300">Restricted Sharing:</strong> Data is only shared with third-party service providers (e.g., cloud infrastructure) necessary to operate the service, or when required by law. All such providers are bound by strict confidentiality agreements.</li>
71+
</ul>
72+
</div>
73+
74+
<div>
75+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">V. Data Security and Sovereignty</h3>
76+
<p class="text-zinc-400 text-sm leading-relaxed pl-4 mb-3">
77+
We implement enterprise-grade security controls to protect your data:
78+
</p>
79+
<ul class="text-zinc-400 text-sm space-y-2 pl-8 list-disc">
80+
<li><strong class="text-zinc-300">Encryption:</strong> Data is encrypted at rest and in transit using TLS 1.3 and AES-256 standards.</li>
81+
<li><strong class="text-zinc-300">Access Control:</strong> Access to Enterprise telemetry is restricted to authorized Alveoli engineering personnel on a "least privilege" basis.</li>
82+
<li><strong class="text-zinc-300">Governance Records:</strong> Contribution records in the CE contributors.yaml are permanent to maintain the integrity of the project's history.</li>
83+
</ul>
84+
</div>
85+
86+
<div>
87+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">VI. Rights and Contact Information</h3>
88+
<p class="text-zinc-400 text-sm leading-relaxed pl-4 mb-3">
89+
Users may request access to or deletion of their personal data, subject to the historical requirements of the Apache 2.0 license and open-source governance.
90+
</p>
91+
<ul class="text-zinc-400 text-sm space-y-2 pl-8 list-disc">
92+
<li><strong class="text-zinc-300">For CE/Governance Inquiries:</strong> Ryan Madhuwala, Lab Leader (<a href="mailto:rawx18.dev@gmail.com" class="text-orange-400 hover:text-orange-300 underline">rawx18.dev@gmail.com</a>)</li>
93+
<li><strong class="text-zinc-300">For EE/Privacy Inquiries:</strong> Ronit Raj, CTO of Alveoli (<a href="mailto:ronitk964@gmail.com" class="text-orange-400 hover:text-orange-300 underline">ronitk964@gmail.com</a>)</li>
94+
</ul>
95+
</div>
96+
</div>
97+
</section>
98+
99+
</div>
100+
</div>
101+
</div>
102+
103+
</div>
104+
</div>
105+
</template>
106+
107+
<script>
108+
export default {
109+
name: 'AppPrivacyPage',
110+
};
111+
</script>
112+
113+
<style scoped>
114+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Inter:wght@400;600;700;900&display=swap');
115+
116+
.font-sans { font-family: 'Inter', sans-serif; }
117+
.font-mono { font-family: 'JetBrains Mono', monospace; }
118+
</style>

frontend/src/modules/auth/pages/signin-page.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,13 @@
128128
</a>
129129
</div>
130130

131-
<div class="text-center mt-6">
131+
<div class="text-center mt-6 flex items-center justify-center gap-4">
132132
<router-link :to="{ name: 'signup' }" class="text-zinc-200 hover:text-orange-500 text-xs font-mono transition-colors">
133133
[ create_account ]
134134
</router-link>
135+
<router-link :to="{ path: '/' }" class="text-zinc-200 hover:text-orange-500 text-xs font-mono transition-colors">
136+
[ home ]
137+
</router-link>
135138
</div>
136139

137140
</div>

frontend/src/modules/auth/pages/signup-page.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,13 @@
179179
</a>
180180
</div>
181181

182-
<div class="text-center mt-6">
182+
<div class="text-center mt-6 flex items-center justify-center gap-4">
183183
<router-link :to="{ name: 'signin' }" class="text-zinc-200 hover:text-orange-500 text-xs font-mono transition-colors">
184184
[ login_existing ]
185185
</router-link>
186+
<router-link :to="{ path: '/' }" class="text-zinc-200 hover:text-orange-500 text-xs font-mono transition-colors">
187+
[ home ]
188+
</router-link>
186189
</div>
187190

188191
</div>

frontend/src/modules/auth/pages/terms-and-privacy.vue

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
>
2727
<div class="text-zinc-400 text-[11px] font-mono leading-relaxed pt-0.5">
2828
I accept the
29-
<a href="https://github.com/LF-Decentralized-Trust-labs/gitmesh" target="_blank" rel="noopener noreferrer" class="text-zinc-300 hover:text-orange-500 underline decoration-zinc-700 hover:decoration-orange-500 transition-colors">
29+
<a @click.stop.prevent="openTerms" class="text-zinc-300 hover:text-orange-500 underline decoration-zinc-700 hover:decoration-orange-500 transition-colors cursor-pointer">
3030
Terms of Service
3131
</a>
3232
and
33-
<a href="https://github.com/LF-Decentralized-Trust-labs/gitmesh" target="_blank" rel="noopener noreferrer" class="text-zinc-300 hover:text-orange-500 underline decoration-zinc-700 hover:decoration-orange-500 transition-colors">
33+
<a @click.stop.prevent="openPrivacy" class="text-zinc-300 hover:text-orange-500 underline decoration-zinc-700 hover:decoration-orange-500 transition-colors cursor-pointer">
3434
Privacy Policy
3535
</a>
3636
</div>
@@ -99,6 +99,16 @@ export default {
9999
methods: {
100100
...mapActions('auth', ['doRefreshCurrentUser', 'doSignout']),
101101
102+
openTerms() {
103+
const routeData = this.$router.resolve({ name: 'terms' });
104+
window.open(routeData.href, '_blank');
105+
},
106+
107+
openPrivacy() {
108+
const routeData = this.$router.resolve({ name: 'privacy' });
109+
window.open(routeData.href, '_blank');
110+
},
111+
102112
doSubmit() {
103113
if (this.model.acceptedTermsAndPrivacy) {
104114
this.loading = true;
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
<template>
2+
<div class="min-h-screen bg-black flex flex-col items-center px-4 py-12 relative overflow-y-auto selection:bg-orange-500/30">
3+
4+
<div class="fixed inset-0 bg-[linear-gradient(to_right,#27272a_1px,transparent_1px),linear-gradient(to_bottom,#27272a_1px,transparent_1px)] bg-[size:4rem_4rem] [mask-image:radial-gradient(ellipse_60%_60%_at_50%_50%,#000_70%,transparent_100%)] opacity-20 pointer-events-none"></div>
5+
6+
<div class="relative w-full max-w-4xl z-10">
7+
8+
<div class="mb-8 text-center flex flex-col items-center">
9+
<div class="flex items-center gap-2 mb-3">
10+
<span class="text-white font-sans text-2xl font-bold tracking-tight">GitMesh</span>
11+
</div>
12+
13+
<h1 class="text-white font-sans text-3xl font-bold tracking-tight mb-2">
14+
<span class="text-orange-500">/</span>terms_of_service
15+
</h1>
16+
<p class="text-zinc-400 text-sm font-mono">
17+
Last Updated: December 27, 2025
18+
</p>
19+
</div>
20+
21+
<div class="bg-zinc-900/20 border border-zinc-700 p-8 mb-8">
22+
<div class="prose prose-invert prose-zinc max-w-none">
23+
<div class="text-zinc-300 leading-relaxed space-y-8">
24+
25+
<section class="space-y-4">
26+
<h2 class="text-orange-500 text-2xl font-bold font-sans mb-6">Terms of Service</h2>
27+
28+
<div class="space-y-6">
29+
<div>
30+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">I. Acceptance of Terms</h3>
31+
<p class="text-zinc-400 text-sm leading-relaxed pl-4">
32+
By accessing the GitMesh source code, participating in the GitMesh community repositories, or installing/deploying GitMesh Community Edition (CE) or GitMesh Enterprise Edition (EE), you ("the User," "the Contributor," or "the Entity") agree to be bound by these Terms of Service. If you do not agree, you must cease all use of the software and exit the community immediately.
33+
</p>
34+
</div>
35+
36+
<div>
37+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">II. Dual-Edition Framework</h3>
38+
<p class="text-zinc-400 text-sm leading-relaxed pl-4 mb-3">
39+
GitMesh operates under a dual-licensing and governance model:
40+
</p>
41+
<ul class="text-zinc-400 text-sm space-y-2 pl-8 list-disc">
42+
<li><strong class="text-zinc-300">Community Edition (CE):</strong> Distributed under the Apache License 2.0. Governance is managed under the Linux Foundation Decentralized Trust (LFDT).</li>
43+
<li><strong class="text-zinc-300">Enterprise Edition (EE):</strong> Distributed under a Proprietary Commercial License owned by Alveoli. Use is strictly limited to active subscribers (Essential, Signals, Scale, or Enterprise tiers).</li>
44+
</ul>
45+
</div>
46+
47+
<div>
48+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">III. Enterprise Use and Restrictions</h3>
49+
<p class="text-zinc-400 text-sm leading-relaxed pl-4 mb-3">
50+
Users of GitMesh EE are granted a non-exclusive, non-transferable, revocable license to use the software solely for internal business operations.
51+
</p>
52+
<ul class="text-zinc-400 text-sm space-y-2 pl-8 list-disc">
53+
<li><strong class="text-zinc-300">Prohibited Acts:</strong> Reverse engineering, decompilation, unauthorized modification, or the creation of derivative works of EE-specific components is strictly prohibited.</li>
54+
<li><strong class="text-zinc-300">Inadvertent Inclusion:</strong> If EE-proprietary code is identified within a CE distribution, it remains the property of Alveoli. Users are legally obligated to report the discovery to Alveoli and purge the code from their systems.</li>
55+
</ul>
56+
</div>
57+
58+
<div>
59+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">IV. Community Governance and Conduct</h3>
60+
<p class="text-zinc-400 text-sm leading-relaxed pl-4">
61+
All participants in the GitMesh ecosystem must adhere to the GitMesh Code of Conduct. We maintain a tiered contributor structure (Newbie, Active, Core, Principal) supported by automated activity tracking. We reserve the right to revoke contributor status for violations of community standards, including harassment, security negligence, or intellectual property infringement.
62+
</p>
63+
</div>
64+
65+
<div>
66+
<h3 class="text-orange-400 text-lg font-bold font-mono mb-3">V. Limitation of Liability and Disclaimer</h3>
67+
<p class="text-zinc-400 text-sm leading-relaxed pl-4">
68+
To the maximum extent permitted by law, GitMesh (all editions) is provided "AS IS." Alveoli and the LFDT disclaim all warranties, express or implied. In no event shall Alveoli or its contributors be liable for any indirect, incidental, or consequential damages, including loss of data, loss of profits, or system downtime.
69+
</p>
70+
</div>
71+
</div>
72+
</section>
73+
74+
</div>
75+
</div>
76+
</div>
77+
78+
</div>
79+
</div>
80+
</template>
81+
82+
<script>
83+
export default {
84+
name: 'AppTermsPage',
85+
};
86+
</script>
87+
88+
<style scoped>
89+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Inter:wght@400;600;700;900&display=swap');
90+
91+
.font-sans { font-family: 'Inter', sans-serif; }
92+
.font-mono { font-family: 'JetBrains Mono', monospace; }
93+
</style>

0 commit comments

Comments
 (0)