content-grade 1.0.40 → 1.0.42
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.
package/bin/content-grade.js
CHANGED
|
@@ -138,19 +138,20 @@ function showFreeTierCTA(count) {
|
|
|
138
138
|
hr();
|
|
139
139
|
|
|
140
140
|
if (remaining === 0) {
|
|
141
|
-
// Limit reached —
|
|
142
|
-
console.log(` ${RD}${B}
|
|
141
|
+
// Limit reached — that run just worked; now close the sale
|
|
142
|
+
console.log(` ${RD}${B}That was your last free analysis (${limit}/${limit} used).${R}`);
|
|
143
143
|
blank();
|
|
144
|
-
console.log(` ${WH}${B}Pro
|
|
145
|
-
console.log(` ${
|
|
144
|
+
console.log(` ${WH}${B}Pro: unlimited analyses — no cap, no daily reset.${R}`);
|
|
145
|
+
console.log(` ${WH} · Batch entire /posts/ directories at once${R}`);
|
|
146
|
+
console.log(` ${WH} · CI integration — exit codes + JSON/HTML output${R}`);
|
|
147
|
+
console.log(` ${WH} · Priority support — reply within 24h${R}`);
|
|
146
148
|
blank();
|
|
147
|
-
console.log(` ${MG}${B}→
|
|
149
|
+
console.log(` ${MG}${B}→ Get Pro ($9/mo, cancel anytime): ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
148
150
|
blank();
|
|
149
|
-
console.log(` ${D}After checkout —
|
|
151
|
+
console.log(` ${D}After checkout — 2 steps to unlock:${R}`);
|
|
150
152
|
console.log(` ${D} 1. Get your key: ${CY}https://content-grade.onrender.com/my-license${R}`);
|
|
151
|
-
console.log(` ${D} 2.
|
|
152
|
-
console.log(` ${D}
|
|
153
|
-
console.log(` ${D} Already have a key? Skip to step 2.${R}`);
|
|
153
|
+
console.log(` ${D} 2. Run: ${CY}content-grade activate <your-key>${R}`);
|
|
154
|
+
console.log(` ${D} Already have a key? Run step 2 now.${R}`);
|
|
154
155
|
} else if (remaining <= 2) {
|
|
155
156
|
// 1-2 runs left — loss aversion + clear Pro value
|
|
156
157
|
console.log(` ${YL}${B}${count}/${limit} runs used · ${remaining} free analysis${remaining === 1 ? '' : 'es'} remaining${R}`);
|
|
@@ -276,17 +277,16 @@ function checkFreeTierLimit() {
|
|
|
276
277
|
|
|
277
278
|
blank();
|
|
278
279
|
hr();
|
|
279
|
-
console.log(` ${
|
|
280
|
+
console.log(` ${RD}${B}You've used all ${limit} free analyses.${R}`);
|
|
280
281
|
blank();
|
|
281
|
-
console.log(` ${WH}${B}Pro
|
|
282
|
-
console.log(` ${WH} ·
|
|
283
|
-
console.log(` ${WH} ·
|
|
284
|
-
console.log(` ${WH} · Priority support —
|
|
285
|
-
console.log(` ${WH} · CI integration — exit codes, JSON/HTML output${R}`);
|
|
282
|
+
console.log(` ${WH}${B}Pro: unlimited analyses — no cap, no daily reset.${R}`);
|
|
283
|
+
console.log(` ${WH} · Batch entire /posts/ directories at once${R}`);
|
|
284
|
+
console.log(` ${WH} · CI integration — exit codes + JSON/HTML output${R}`);
|
|
285
|
+
console.log(` ${WH} · Priority support — reply within 24h${R}`);
|
|
286
286
|
blank();
|
|
287
|
-
console.log(` ${MG}${B}→ Get Pro ($9/mo): ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
287
|
+
console.log(` ${MG}${B}→ Get Pro ($9/mo, cancel anytime): ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
288
288
|
blank();
|
|
289
|
-
console.log(` ${D}After
|
|
289
|
+
console.log(` ${D}After checkout — 2 steps to unlock:${R}`);
|
|
290
290
|
console.log(` ${D} 1. Get your key: ${CY}https://content-grade.onrender.com/my-license${R}`);
|
|
291
291
|
console.log(` ${D} 2. Run: ${CY}content-grade activate <your-key>${R}`);
|
|
292
292
|
console.log(` ${D} Already have a key? Run step 2 now.${R}`);
|
|
@@ -970,7 +970,9 @@ async function cmdInit() {
|
|
|
970
970
|
console.log(` ${CY}content-grade start${R}`);
|
|
971
971
|
blank();
|
|
972
972
|
}
|
|
973
|
-
console.log(` ${
|
|
973
|
+
console.log(` ${WH}Pro: unlimited analyses + batch mode + CI integration — $9/mo, cancel anytime${R}`);
|
|
974
|
+
console.log(` ${MG}→ Get Pro: ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
975
|
+
console.log(` ${D}After checkout: content-grade activate <your-key>${R}`);
|
|
974
976
|
blank();
|
|
975
977
|
}
|
|
976
978
|
|
|
@@ -1131,13 +1133,15 @@ async function cmdBatch(dirPath) {
|
|
|
1131
1133
|
blank();
|
|
1132
1134
|
console.log(` ${B}${MG}Batch Analysis — Pro Feature${R}`);
|
|
1133
1135
|
blank();
|
|
1134
|
-
console.log(` ${D}
|
|
1136
|
+
console.log(` ${D}Grade every file in a directory in one shot. Pro only.${R}`);
|
|
1135
1137
|
blank();
|
|
1136
|
-
console.log(` Pro
|
|
1138
|
+
console.log(` ${WH}${B}Pro ($9/mo): unlimited analyses + batch mode + CI integration${R}`);
|
|
1137
1139
|
blank();
|
|
1138
|
-
console.log(` ${MG}${B}→ Get Pro: ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
1140
|
+
console.log(` ${MG}${B}→ Get Pro ($9/mo, cancel anytime): ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
1139
1141
|
blank();
|
|
1140
|
-
console.log(` ${D}
|
|
1142
|
+
console.log(` ${D}After checkout — 2 steps to unlock:${R}`);
|
|
1143
|
+
console.log(` ${D} 1. Get your key: ${CY}https://content-grade.onrender.com/my-license${R}`);
|
|
1144
|
+
console.log(` ${D} 2. Run: ${CY}content-grade activate <your-key>${R}`);
|
|
1141
1145
|
blank();
|
|
1142
1146
|
process.exit(1);
|
|
1143
1147
|
}
|
|
@@ -1620,12 +1624,12 @@ function cmdHelp() {
|
|
|
1620
1624
|
|
|
1621
1625
|
console.log(` ${B}PRICING${R}`);
|
|
1622
1626
|
blank();
|
|
1623
|
-
console.log(` Free
|
|
1624
|
-
console.log(` Pro
|
|
1625
|
-
console.log(` Business
|
|
1626
|
-
console.log(` Team
|
|
1627
|
+
console.log(` Free 15 analyses total $0`);
|
|
1628
|
+
console.log(` Pro Unlimited analyses $9/mo (cancel anytime)`);
|
|
1629
|
+
console.log(` Business Unlimited analyses $29/mo`);
|
|
1630
|
+
console.log(` Team Unlimited analyses $79/mo`);
|
|
1627
1631
|
blank();
|
|
1628
|
-
console.log(` Get Pro: ${CY}${UPGRADE_LINKS.free}${R} ${D}# direct checkout${R}`);
|
|
1632
|
+
console.log(` Get Pro: ${CY}${UPGRADE_LINKS.free}${R} ${D}# direct checkout, instant access${R}`);
|
|
1629
1633
|
console.log(` Activate: ${CY}content-grade activate <your-license-key>${R}`);
|
|
1630
1634
|
blank();
|
|
1631
1635
|
|
package/bin/telemetry.js
CHANGED
|
@@ -30,7 +30,7 @@ const EVENTS_FILE = join(CONFIG_DIR, 'events.jsonl');
|
|
|
30
30
|
const REMOTE_URL = process.env.CONTENT_GRADE_TELEMETRY_URL || 'https://content-grade.onrender.com/api/telemetry';
|
|
31
31
|
|
|
32
32
|
// Lightweight ping endpoint — one POST per CLI run, 500ms hard timeout.
|
|
33
|
-
const DEFAULT_PING_URL = 'https://content-grade.onrender.com/ping';
|
|
33
|
+
const DEFAULT_PING_URL = 'https://content-grade.onrender.com/api/ping';
|
|
34
34
|
|
|
35
35
|
// ── Internal helpers ──────────────────────────────────────────────────────────
|
|
36
36
|
|
|
@@ -35,7 +35,7 @@ export function registerAnalyticsRoutes(app) {
|
|
|
35
35
|
// Receives { command, version, timestamp, anonymous_id } from CLI.
|
|
36
36
|
// No PII. Maps anonymous_id → install_id for unique user counts.
|
|
37
37
|
// Always returns 200 — never interrupt a CLI session.
|
|
38
|
-
app.post('/ping', async (req) => {
|
|
38
|
+
app.post('/api/ping', async (req) => {
|
|
39
39
|
try {
|
|
40
40
|
const body = req.body;
|
|
41
41
|
const anonymousId = body?.anonymous_id ? String(body.anonymous_id).slice(0, 64) : null;
|
package/package.json
CHANGED