logshield-cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,217 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Privacy Policy - LogShield</title>
7
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
8
+ <style>
9
+ * { margin: 0; padding: 0; box-sizing: border-box; }
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
12
+ line-height: 1.6;
13
+ color: #333;
14
+ background: linear-gradient(to bottom right, #f8fafc, #e0f2fe);
15
+ min-height: 100vh;
16
+ padding: 20px;
17
+ }
18
+ .container {
19
+ max-width: 800px;
20
+ margin: 0 auto;
21
+ background: white;
22
+ padding: 40px;
23
+ border-radius: 12px;
24
+ box-shadow: 0 4px 6px rgba(0,0,0,0.1);
25
+ }
26
+ .back-button {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 8px;
30
+ padding: 10px 20px;
31
+ background: #3b82f6;
32
+ color: white;
33
+ text-decoration: none;
34
+ border-radius: 6px;
35
+ font-size: 14px;
36
+ font-weight: 500;
37
+ transition: background 0.2s;
38
+ margin-bottom: 30px;
39
+ }
40
+ .back-button:hover { background: #2563eb; }
41
+ h1 { color: #1e40af; font-size: 32px; margin-bottom: 10px; }
42
+ .last-updated { color: #6b7280; font-size: 14px; margin-bottom: 30px; }
43
+ h2 { color: #3b82f6; font-size: 24px; margin: 30px 0 15px; }
44
+ h3 { font-size: 18px; color: #1f2937; margin: 20px 0 10px; }
45
+ p, li { margin-bottom: 15px; color: #4b5563; }
46
+ ul { margin-left: 30px; }
47
+ strong { color: #1f2937; }
48
+ .highlight { background: #fef3c7; padding: 15px; border-left: 4px solid #f59e0b; margin: 20px 0; border-radius: 4px; }
49
+ .entity-info { background: #f0f9ff; padding: 15px; border-left: 4px solid #3b82f6; margin: 20px 0; border-radius: 4px; }
50
+ @media (max-width: 768px) {
51
+ .container { padding: 20px; }
52
+ h1 { font-size: 24px; }
53
+ h2 { font-size: 20px; }
54
+ }
55
+ </style>
56
+ </head>
57
+ <body>
58
+ <div class="container">
59
+ <a href="/" class="back-button">
60
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
61
+ <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
62
+ </svg>
63
+ Back to LogShield
64
+ </a>
65
+
66
+ <h1>Privacy Policy</h1>
67
+ <p class="last-updated"><strong>Last updated:</strong> December 10, 2025</p>
68
+
69
+ <!-- CRITICAL: Entity Information for Paddle -->
70
+ <div class="entity-info">
71
+ <strong>Data Controller:</strong> This Privacy Policy describes how <strong>Hendra Afria</strong>, operating as <strong>LogShield</strong>, collects, uses, and protects your information when you use our log sanitization service.
72
+ </div>
73
+
74
+ <div class="highlight">
75
+ <strong>&#128274; Privacy First:</strong> LogShield processes all your log data entirely in your browser. We never see, store, or transmit your sensitive data to our servers.
76
+ </div>
77
+
78
+ <h2>1. Information We Collect</h2>
79
+
80
+ <h3>a) Account Information</h3>
81
+ <ul>
82
+ <li>Email address (for account creation and communication)</li>
83
+ <li>Display name (optional)</li>
84
+ <li>Payment information (processed securely by Paddle, we never see full card details)</li>
85
+ </ul>
86
+
87
+ <h3>b) Usage Data</h3>
88
+ <ul>
89
+ <li>Anonymous analytics via Plausible (privacy-friendly, GDPR-compliant)</li>
90
+ <li>Feature usage statistics (aggregated, non-identifying)</li>
91
+ <li>Error logs for debugging (no personal data included)</li>
92
+ </ul>
93
+
94
+ <h3>c) What We DON'T Collect</h3>
95
+ <ul>
96
+ <li><strong>Your log data</strong> - processed 100% client-side in your browser</li>
97
+ <li><strong>Tracking cookies</strong> - we don't use them</li>
98
+ <li><strong>Browsing history</strong></li>
99
+ <li><strong>Device fingerprints</strong></li>
100
+ </ul>
101
+
102
+ <h2>2. How We Use Your Information</h2>
103
+ <p>We use collected information solely to:</p>
104
+ <ul>
105
+ <li>Provide and improve the Service</li>
106
+ <li>Process payments and manage subscriptions</li>
107
+ <li>Send important service updates and security alerts</li>
108
+ <li>Respond to support requests</li>
109
+ <li>Analyze usage patterns (anonymously) to improve features</li>
110
+ </ul>
111
+
112
+ <h2>3. Client-Side Processing</h2>
113
+ <p><strong>This is our core privacy commitment:</strong></p>
114
+ <p>All log sanitization happens entirely in your browser using JavaScript. When you paste or upload logs:</p>
115
+ <ul>
116
+ <li>&#x2705; Data stays in your browser's memory</li>
117
+ <li>&#x2705; Sanitization patterns are applied locally</li>
118
+ <li>&#x2705; No network transmission of your log content</li>
119
+ <li>&#x2705; No server-side storage of your logs</li>
120
+ <li>&#x2705; Data cleared when you close the tab</li>
121
+ </ul>
122
+
123
+ <h2>4. Third-Party Services</h2>
124
+
125
+ <h3>Paddle (Payment Processing)</h3>
126
+ <ul>
127
+ <li>Handles all payment transactions</li>
128
+ <li>PCI-DSS Level 1 compliant</li>
129
+ <li>We never see your full credit card details</li>
130
+ <li>Privacy policy: <a href="https://paddle.com/privacy" style="color: #3b82f6;">paddle.com/privacy</a></li>
131
+ </ul>
132
+
133
+ <h3>Plausible Analytics</h3>
134
+ <ul>
135
+ <li>Privacy-friendly, GDPR-compliant analytics</li>
136
+ <li>No cookies, no personal data collection</li>
137
+ <li>Only tracks aggregated page views and referrers</li>
138
+ <li>Open source: <a href="https://plausible.io" style="color: #3b82f6;">plausible.io</a></li>
139
+ </ul>
140
+
141
+ <h3>Vercel (Hosting)</h3>
142
+ <ul>
143
+ <li>Hosts our website infrastructure</li>
144
+ <li>Standard server logs only (IP, user agent, timestamp)</li>
145
+ <li>Privacy policy: <a href="https://vercel.com/legal/privacy-policy" style="color: #3b82f6;">vercel.com/legal/privacy-policy</a></li>
146
+ </ul>
147
+
148
+ <h2>5. Data Storage and Security</h2>
149
+ <p><strong>What we store:</strong></p>
150
+ <ul>
151
+ <li>Account details (encrypted at rest)</li>
152
+ <li>Subscription status</li>
153
+ <li>User preferences (in browser localStorage)</li>
154
+ </ul>
155
+
156
+ <p><strong>What we don't store:</strong></p>
157
+ <ul>
158
+ <li>Your log content</li>
159
+ <li>Sanitized output</li>
160
+ <li>Custom patterns you create</li>
161
+ </ul>
162
+
163
+ <h2>6. Your Rights (GDPR & CCPA)</h2>
164
+ <p>You have the right to:</p>
165
+ <ul>
166
+ <li><strong>Access:</strong> Request a copy of your data</li>
167
+ <li><strong>Rectification:</strong> Correct inaccurate information</li>
168
+ <li><strong>Erasure:</strong> Request account and data deletion</li>
169
+ <li><strong>Data Portability:</strong> Download your data in portable format</li>
170
+ <li><strong>Object:</strong> Object to data processing</li>
171
+ <li><strong>Withdraw Consent:</strong> Opt-out of marketing emails anytime</li>
172
+ </ul>
173
+ <p>To exercise these rights, email: <strong><a href="mailto:hello@logshield.dev" style="color: inherit; text-decoration: none;">hello@logshield.dev</a></strong></p>
174
+
175
+ <h2>7. Data Retention</h2>
176
+ <ul>
177
+ <li>Account data: Retained while account is active</li>
178
+ <li>After deletion: Permanently removed within 30 days</li>
179
+ <li>Backups: Deleted from backups within 90 days</li>
180
+ <li>Legal requirements: Retained only if mandated by law</li>
181
+ </ul>
182
+
183
+ <h2>8. Cookies</h2>
184
+ <p>We use minimal, essential cookies only:</p>
185
+ <ul>
186
+ <li><strong>Authentication cookie:</strong> Keeps you logged in (httpOnly, secure)</li>
187
+ <li><strong>Preferences:</strong> Stored in localStorage (not transmitted to servers)</li>
188
+ <li><strong>No tracking or advertising cookies</strong></li>
189
+ </ul>
190
+
191
+ <h2>9. International Data Transfers</h2>
192
+ <p>LogShield operates globally. Your account data may be processed in:</p>
193
+ <ul>
194
+ <li>Indonesia (primary business location)</li>
195
+ <li>Germany (development)</li>
196
+ <li>United States (hosting via Vercel)</li>
197
+ </ul>
198
+ <p>We ensure adequate safeguards for international transfers per GDPR Article 46.</p>
199
+
200
+ <h2>10. Children's Privacy</h2>
201
+ <p>LogShield is not intended for users under 13 years of age. We do not knowingly collect information from children. If you believe we have collected data from a child, please contact us immediately for removal.</p>
202
+
203
+ <h2>11. Changes to This Policy</h2>
204
+ <p>We may update this Privacy Policy periodically. We will notify you of significant changes via email or prominent notice on the Service. Continued use after changes constitutes acceptance of the updated policy.</p>
205
+
206
+ <h2>12. Contact Us</h2>
207
+ <p>Questions or concerns about privacy?</p>
208
+ <p><strong>Email:</strong> <a href="mailto:hello@logshield.dev" style="color: inherit;">hello@logshield.dev</a></p>
209
+ <p><strong>Response time:</strong> Within 48 hours</p>
210
+ <p><strong>Website:</strong> <a href="https://logshield.dev" style="color: inherit;">https://logshield.dev</a></p>
211
+
212
+ <div style="margin-top: 40px; padding-top: 20px; border-top: 1px solid #e5e7eb;">
213
+ <a href="/" class="back-button">Back to LogShield</a>
214
+ </div>
215
+ </div>
216
+ </body>
217
+ </html>
@@ -0,0 +1,221 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Refund Policy - LogShield</title>
7
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
8
+ <style>
9
+ * { margin: 0; padding: 0; box-sizing: border-box; }
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
12
+ line-height: 1.6;
13
+ color: #333;
14
+ background: linear-gradient(to bottom right, #f8fafc, #e0f2fe);
15
+ min-height: 100vh;
16
+ padding: 20px;
17
+ }
18
+ .container {
19
+ max-width: 800px;
20
+ margin: 0 auto;
21
+ background: white;
22
+ padding: 40px;
23
+ border-radius: 12px;
24
+ box-shadow: 0 4px 6px rgba(0,0,0,0.1);
25
+ }
26
+ .back-button {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 8px;
30
+ padding: 10px 20px;
31
+ background: #3b82f6;
32
+ color: white;
33
+ text-decoration: none;
34
+ border-radius: 6px;
35
+ font-size: 14px;
36
+ font-weight: 500;
37
+ transition: background 0.2s;
38
+ margin-bottom: 30px;
39
+ }
40
+ .back-button:hover { background: #2563eb; }
41
+ h1 { color: #1e40af; font-size: 32px; margin-bottom: 10px; }
42
+ .last-updated { color: #6b7280; font-size: 14px; margin-bottom: 30px; }
43
+ h2 { color: #3b82f6; font-size: 24px; margin: 30px 0 15px; }
44
+ h3 { font-size: 18px; color: #1f2937; margin: 20px 0 10px; }
45
+ p, li { margin-bottom: 15px; color: #4b5563; }
46
+ ul, ol { margin-left: 30px; }
47
+ strong { color: #1f2937; }
48
+ .guarantee-box { background: #d1fae5; padding: 20px; border-left: 4px solid #10b981; margin: 20px 0; border-radius: 4px; }
49
+ .entity-info { background: #f0f9ff; padding: 15px; border-left: 4px solid #3b82f6; margin: 20px 0; border-radius: 4px; }
50
+ @media (max-width: 768px) {
51
+ .container { padding: 20px; }
52
+ h1 { font-size: 24px; }
53
+ h2 { font-size: 20px; }
54
+ }
55
+ </style>
56
+ </head>
57
+ <body>
58
+ <div class="container">
59
+ <a href="/" class="back-button">
60
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
61
+ <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
62
+ </svg>
63
+ Back to LogShield
64
+ </a>
65
+
66
+ <h1>Refund Policy</h1>
67
+ <p class="last-updated"><strong>Last updated:</strong> December 10, 2025</p>
68
+
69
+ <!-- CRITICAL: Entity Information for Paddle -->
70
+ <div class="entity-info">
71
+ <strong>Refund Provider:</strong> This refund policy applies to all paid subscriptions for LogShield, a service operated by <strong>Hendra Afria</strong> ("LogShield", "we", "us", or "our").
72
+ </div>
73
+
74
+ <div class="guarantee-box">
75
+ <h2 style="margin-top: 0; color: #065f46;">&#x1F49A; 14-Day Money-Back Guarantee</h2>
76
+ <p style="margin-bottom: 0; color: #047857;">We're confident you'll love LogShield. If you're not satisfied for any reason, we offer a full refund within 14 days of purchase?no questions asked.</p>
77
+ </div>
78
+
79
+ <h2>1. Refund Eligibility</h2>
80
+
81
+ <h3>&#x2705; Eligible for Full Refund:</h3>
82
+ <ul>
83
+ <li>Refund requests made within <strong>14 days</strong> of purchase</li>
84
+ <li>First-time LogShield subscription (new customers)</li>
85
+ <li>Technical issues preventing service use</li>
86
+ <li>Service not functioning as described</li>
87
+ <li>Accidental duplicate purchases</li>
88
+ <li>General dissatisfaction with the service</li>
89
+ </ul>
90
+
91
+ <h3>&#x274C; Not Eligible for Refund:</h3>
92
+ <ul>
93
+ <li>Refund requests after <strong>14 days</strong> of purchase</li>
94
+ <li>Violations of our Terms of Service</li>
95
+ <li>Abusive or fraudulent use of the service</li>
96
+ <li>Lifetime licenses after <strong>30 days</strong> of purchase</li>
97
+ <li>Subscription renewal charges (must cancel before renewal date)</li>
98
+ </ul>
99
+
100
+ <h2>2. How to Request a Refund</h2>
101
+ <p>To request a refund, please follow these steps:</p>
102
+ <ol>
103
+ <li><strong>Email us:</strong> <a href="mailto:hello@logshield.dev" style="color: inherit;">hello@logshield.dev</a></li>
104
+ <li><strong>Subject line:</strong> "Refund Request - [Your Order Number]"</li>
105
+ <li><strong>Include in your email:</strong>
106
+ <ul style="margin-top: 10px;">
107
+ <li>Order number or transaction ID</li>
108
+ <li>Email address used for purchase</li>
109
+ <li>Brief reason for refund (optional but appreciated)</li>
110
+ </ul>
111
+ </li>
112
+ <li><strong>Our response:</strong> Within 24 hours</li>
113
+ <li><strong>Refund processing:</strong> 5-7 business days after approval</li>
114
+ </ol>
115
+
116
+ <h2>3. Refund Processing Timeline</h2>
117
+ <ul>
118
+ <li><strong>Initial response:</strong> Within 24 hours of your request</li>
119
+ <li><strong>Approval decision:</strong> Usually immediate (within 14-day window)</li>
120
+ <li><strong>Refund processing:</strong> 5-7 business days</li>
121
+ <li><strong>Credit to account:</strong> Refunded to original payment method</li>
122
+ <li><strong>Bank processing:</strong> Additional 3-5 business days (varies by bank)</li>
123
+ </ul>
124
+
125
+ <h2>4. Subscription Cancellation</h2>
126
+ <p>You can cancel your LogShield subscription at any time:</p>
127
+ <ul>
128
+ <li><strong>How to cancel:</strong> Account settings ? Subscription ? Cancel Subscription</li>
129
+ <li><strong>Effect:</strong> No future charges will be made</li>
130
+ <li><strong>Access:</strong> Service continues until end of current billing period</li>
131
+ <li><strong>Data retention:</strong> Account data retained for 30 days, then permanently deleted</li>
132
+ </ul>
133
+ <p><strong>Important:</strong> Cancellation does not automatically trigger a refund. To receive a refund for your current billing period, you must request it within 14 days of purchase using the process above.</p>
134
+
135
+ <h2>5. Special Cases</h2>
136
+
137
+ <h3>Lifetime License</h3>
138
+ <ul>
139
+ <li><strong>Refund window:</strong> 30 days from purchase (extended from standard 14 days)</li>
140
+ <li><strong>After 30 days:</strong> Non-refundable</li>
141
+ <li><strong>Rationale:</strong> One-time purchases are final after the extended trial period</li>
142
+ </ul>
143
+
144
+ <h3>Team Plans</h3>
145
+ <ul>
146
+ <li>Same 14-day refund window applies</li>
147
+ <li>Refund covers the entire team subscription</li>
148
+ <li>All team members will lose access upon refund</li>
149
+ </ul>
150
+
151
+ <h3>Annual Subscriptions</h3>
152
+ <ul>
153
+ <li>14-day full refund from original purchase date</li>
154
+ <li>After 14 days: No refund available, but can cancel to prevent next year's charge</li>
155
+ </ul>
156
+
157
+ <h3>Promotional Discounts</h3>
158
+ <ul>
159
+ <li>Refund amount: The actual amount you paid (after discount applied)</li>
160
+ <li>Discount codes cannot be reused after refund is processed</li>
161
+ </ul>
162
+
163
+ <h2>6. Partial Refunds</h2>
164
+ <p>We may offer partial refunds in exceptional circumstances:</p>
165
+ <ul>
166
+ <li>Extended service downtime (>24 consecutive hours)</li>
167
+ <li>Critical feature unavailability affecting your use case</li>
168
+ <li>Pro-rated refund for unused subscription time (evaluated case-by-case)</li>
169
+ </ul>
170
+ <p>Contact us at hello@logshield.dev to discuss partial refund eligibility.</p>
171
+
172
+ <h2>7. Chargebacks</h2>
173
+ <p><strong>Please contact us before filing a chargeback with your bank.</strong></p>
174
+ <ul>
175
+ <li>Chargebacks result in immediate account termination</li>
176
+ <li>We're committed to resolving refund issues fairly and quickly</li>
177
+ <li>Most refund requests are approved within hours during the eligible period</li>
178
+ <li>Chargebacks incur additional processing fees we must pay to payment processors</li>
179
+ </ul>
180
+ <p>We value your satisfaction and will work with you to resolve any billing concerns.</p>
181
+
182
+ <h2>8. Our Refund Commitment</h2>
183
+ <p><strong>This is our core commitment to you:</strong></p>
184
+ <p>We strive to make our refund process as transparent and straightforward as possible:</p>
185
+ <ul>
186
+ <li><strong>Transparency:</strong> Clear eligibility criteria and timelines</li>
187
+ <li><strong>Fairness:</strong> Consistent application of policy to all customers</li>
188
+ <li><strong>Communication:</strong> Regular updates throughout the refund process</li>
189
+ <li><strong>Respect:</strong> Courteous treatment of all refund requests</li>
190
+ </ul>
191
+ <p>Our goal is your satisfaction. If LogShield isn't the right fit for your needs, we'll process your refund promptly and without unnecessary obstacles.</p>
192
+
193
+ <h2>9. Policy Updates</h2>
194
+ <p>We may update this Refund Policy periodically. We will notify you of significant changes via email or prominent notice on the Service. Continued use after changes constitutes acceptance of the updated policy.</p>
195
+ <ul>
196
+ <li>Minor updates: Posted on our website with updated "Last updated" date</li>
197
+ <li>Major updates: Notified via email 30 days before changes take effect</li>
198
+ <li>Existing customers: Refund requests are processed under the policy in effect at time of purchase</li>
199
+ </ul>
200
+
201
+ <h2>10. Governing Law</h2>
202
+ <p>This Refund Policy is governed by and construed in accordance with the laws of <strong>Indonesia</strong>, without regard to its conflict of law principles. Any disputes arising from refund requests shall be subject to the exclusive jurisdiction of the courts located in <strong>Jakarta, Indonesia</strong>.</p>
203
+ <p>For customers in the European Union, this policy is without prejudice to any mandatory statutory rights you may have under applicable consumer protection laws.</p>
204
+
205
+ <h2>11. Contact Us</h2>
206
+ <p>Questions or concerns about refunds?</p>
207
+ <p><strong>Email:</strong> <a href="mailto:hello@logshield.dev" style="color: inherit;">hello@logshield.dev</a></p>
208
+ <p><strong>Response time:</strong> Within 24 hours</p>
209
+ <p><strong>Website:</strong> <a href="https://logshield.dev" style="color: inherit;">https://logshield.dev</a></p>
210
+
211
+ <div style="margin-top: 40px; padding-top: 20px; border-top: 1px solid #e5e7eb;">
212
+ <a href="/" class="back-button">
213
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
214
+ <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
215
+ </svg>
216
+ Back to LogShield
217
+ </a>
218
+ </div>
219
+ </div>
220
+ </body>
221
+ </html>
@@ -0,0 +1,4 @@
1
+ User-agent: *
2
+ Allow: /
3
+
4
+ Sitemap: https://logshield.dev/sitemap.xml
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "LogShield",
3
+ "short_name": "LogShield",
4
+ "description": "Secure Log Sanitizer for Developers",
5
+ "icons": [
6
+ {
7
+ "src": "/android-chrome-192x192.png",
8
+ "sizes": "192x192",
9
+ "type": "image/png"
10
+ },
11
+ {
12
+ "src": "/android-chrome-512x512.png",
13
+ "sizes": "512x512",
14
+ "type": "image/png"
15
+ }
16
+ ],
17
+ "theme_color": "#3b82f6",
18
+ "background_color": "#ffffff",
19
+ "display": "standalone"
20
+ }
@@ -0,0 +1,140 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Terms of Service - LogShield</title>
7
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
8
+ <style>
9
+ * { margin: 0; padding: 0; box-sizing: border-box; }
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
12
+ line-height: 1.6;
13
+ color: #333;
14
+ background: linear-gradient(to bottom right, #f8fafc, #e0f2fe);
15
+ min-height: 100vh;
16
+ padding: 20px;
17
+ }
18
+ .container {
19
+ max-width: 800px;
20
+ margin: 0 auto;
21
+ background: white;
22
+ padding: 40px;
23
+ border-radius: 12px;
24
+ box-shadow: 0 4px 6px rgba(0,0,0,0.1);
25
+ }
26
+ .back-button {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 8px;
30
+ padding: 10px 20px;
31
+ background: #3b82f6;
32
+ color: white;
33
+ text-decoration: none;
34
+ border-radius: 6px;
35
+ font-size: 14px;
36
+ font-weight: 500;
37
+ transition: background 0.2s;
38
+ margin-bottom: 30px;
39
+ }
40
+ .back-button:hover { background: #2563eb; }
41
+ h1 { color: #1e40af; font-size: 32px; margin-bottom: 10px; }
42
+ .last-updated { color: #6b7280; font-size: 14px; margin-bottom: 30px; }
43
+ h2 { color: #3b82f6; font-size: 24px; margin: 30px 0 15px; }
44
+ p, li { margin-bottom: 15px; color: #4b5563; }
45
+ ul { margin-left: 30px; }
46
+ strong { color: #1f2937; }
47
+ .entity-info { background: #f0f9ff; padding: 15px; border-left: 4px solid #3b82f6; margin: 20px 0; border-radius: 4px; }
48
+ @media (max-width: 768px) {
49
+ .container { padding: 20px; }
50
+ h1 { font-size: 24px; }
51
+ h2 { font-size: 20px; }
52
+ }
53
+ </style>
54
+ </head>
55
+ <body>
56
+ <div class="container">
57
+ <a href="/" class="back-button">
58
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
59
+ <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
60
+ </svg>
61
+ Back to LogShield
62
+ </a>
63
+
64
+ <h1>Terms of Service</h1>
65
+ <p class="last-updated"><strong>Last updated:</strong> December 10, 2025</p>
66
+
67
+ <!-- CRITICAL: Entity Information for Paddle -->
68
+ <div class="entity-info">
69
+ <strong>Service Provider:</strong> These Terms of Service govern your use of LogShield, a log sanitization service operated by <strong>Hendra Afria</strong> ("LogShield", "we", "us", or "our").
70
+ </div>
71
+
72
+ <h2>1. Agreement to Terms</h2>
73
+ <p>By accessing and using LogShield ("the Service"), you agree to be bound by these Terms of Service. If you do not agree to these terms, please do not use the Service.</p>
74
+
75
+ <h2>2. Service Description</h2>
76
+ <p>LogShield provides a browser-based log sanitization service that removes sensitive data from text, including but not limited to API keys, tokens, credentials, personally identifiable information (PII), and other security patterns.</p>
77
+
78
+ <h2>3. Use License</h2>
79
+ <p>Subject to your compliance with these Terms, LogShield grants you a personal, non-exclusive, non-transferable, revocable license to use the Service for your personal or internal business purposes.</p>
80
+
81
+ <h2>4. User Responsibilities</h2>
82
+ <p>You agree to:</p>
83
+ <ul>
84
+ <li>Provide accurate account information</li>
85
+ <li>Maintain the security of your account credentials</li>
86
+ <li>Be responsible for all activities under your account</li>
87
+ <li>Not use the Service for illegal purposes</li>
88
+ <li>Not attempt to bypass usage limitations or restrictions</li>
89
+ <li>Not reverse engineer, decompile, or attempt to extract source code</li>
90
+ </ul>
91
+
92
+ <h2>5. Payment Terms</h2>
93
+ <p>Paid subscriptions are billed in advance on a monthly or annual basis through our payment processor (Paddle). All fees are in USD and are non-refundable except as described in our <a href="/refund.html" style="color: #3b82f6; text-decoration: underline;">Refund Policy</a>.</p>
94
+
95
+ <p><strong>Subscription Plans:</strong></p>
96
+ <ul>
97
+ <li>Starter: $7/month</li>
98
+ <li>Pro: $19/month</li>
99
+ <li>Team: $79/month (5 seats)</li>
100
+ <li>Lifetime: $199 one-time payment</li>
101
+ </ul>
102
+
103
+ <h2>6. Refund Policy</h2>
104
+ <p>We offer a 14-day money-back guarantee for all new subscriptions. For complete details, please see our <a href="/refund.html" style="color: #3b82f6; text-decoration: underline;">Refund Policy</a>.</p>
105
+
106
+ <h2>7. Privacy and Data Processing</h2>
107
+ <p><strong>Important:</strong> LogShield processes all log data entirely client-side in your browser. We never see, store, or transmit your log content to our servers. For details on account data and analytics, see our <a href="/privacy.html" style="color: #3b82f6; text-decoration: underline;">Privacy Policy</a>.</p>
108
+
109
+ <h2>8. Cancellation and Termination</h2>
110
+ <p>You may cancel your subscription at any time through your account settings. Your access will continue until the end of your current billing period. We reserve the right to suspend or terminate accounts that violate these Terms.</p>
111
+
112
+ <h2>9. Modifications to Service</h2>
113
+ <p>We reserve the right to modify, suspend, or discontinue any part of the Service at any time with reasonable notice. We will not be liable for any modification, suspension, or discontinuance of the Service.</p>
114
+
115
+ <h2>10. Intellectual Property</h2>
116
+ <p>The Service, including its software, design, and content (excluding user-generated content), is owned by LogShield and protected by international copyright, trademark, and other intellectual property laws. The core sanitization patterns are available as open source under the MIT license.</p>
117
+
118
+ <h2>11. Disclaimer of Warranties</h2>
119
+ <p>THE SERVICE IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.</p>
120
+
121
+ <h2>12. Limitation of Liability</h2>
122
+ <p>IN NO EVENT SHALL LOGSHIELD BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES ARISING FROM YOUR USE OF OR INABILITY TO USE THE SERVICE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
123
+
124
+ <h2>13. Governing Law and Jurisdiction</h2>
125
+ <p>These Terms are governed by and construed in accordance with the laws of Indonesia. Any disputes shall be resolved in the courts of Indonesia.</p>
126
+
127
+ <h2>14. Changes to Terms</h2>
128
+ <p>We may update these Terms from time to time. We will notify users of significant changes via email or through the Service. Your continued use after changes constitutes acceptance of the modified Terms.</p>
129
+
130
+ <h2>15. Contact Information</h2>
131
+ <p>For questions about these Terms of Service:</p>
132
+ <p><strong>Email:</strong> <a href="mailto:hello@logshield.dev" style="color: inherit;">hello@logshield.dev</a></p>
133
+ <p><strong>Website:</strong> <a href="https://logshield.dev" style="color: inherit;">https://logshield.dev</a></p>
134
+
135
+ <div style="margin-top: 40px; padding-top: 20px; border-top: 1px solid #e5e7eb;">
136
+ <a href="/" class="back-button">Back to LogShield</a>
137
+ </div>
138
+ </div>
139
+ </body>
140
+ </html>
@@ -0,0 +1,16 @@
1
+ export function isValidLuhn(input) {
2
+ const digits = input.replace(/\D/g, "");
3
+ let sum = 0;
4
+ let alt = false;
5
+ for (let i = digits.length - 1; i >= 0; i--) {
6
+ let n = parseInt(digits[i], 10);
7
+ if (alt) {
8
+ n *= 2;
9
+ if (n > 9)
10
+ n -= 9;
11
+ }
12
+ sum += n;
13
+ alt = !alt;
14
+ }
15
+ return sum % 10 === 0;
16
+ }
package/dist/vite.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/package.json CHANGED
@@ -1,25 +1,21 @@
1
1
  {
2
2
  "name": "logshield-cli",
3
- "version": "0.1.0",
4
- "type": "module",
3
+ "version": "0.2.0",
4
+ "type": "commonjs",
5
5
  "bin": {
6
- "logshield": "dist/cli/cli/index.js"
6
+ "logshield": "dist/cli/index.cjs"
7
7
  },
8
8
  "files": [
9
- "dist/cli",
10
- "dist/engine",
11
- "dist/rules",
9
+ "dist",
12
10
  "README.md",
13
11
  "LICENSE"
14
12
  ],
15
13
  "scripts": {
16
- "build": "vite build",
14
+ "build": "node scripts/build-cli.cjs",
17
15
  "test": "vitest"
18
16
  },
19
- "dependencies": {},
20
17
  "devDependencies": {
21
- "vite": "^5.4.0",
22
- "vitest": "^4.0.15",
23
- "terser": "^5.31.3"
18
+ "esbuild": "^0.25.0",
19
+ "vitest": "^4.0.0"
24
20
  }
25
21
  }