vidspotai-shared 1.0.97 → 1.0.98
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.
|
@@ -42,32 +42,42 @@ export declare const MIN_CREDITS_PER_PAID_OP = 10;
|
|
|
42
42
|
*/
|
|
43
43
|
export declare const MIN_CREDITS_PER_IMAGE_OP = 2;
|
|
44
44
|
/**
|
|
45
|
-
* Credits granted on SIGNUP
|
|
46
|
-
*
|
|
45
|
+
* Credits granted on SIGNUP — one full floored generation ($1.00 of provider
|
|
46
|
+
* cost), no card required. This is the top of the funnel: a new account can try
|
|
47
|
+
* the product once before being asked for anything.
|
|
47
48
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* consumed credits, and only 88 who ever spent past the free grant — a 0.59%
|
|
52
|
-
* conversion on roughly $15k of given-away provider cost. Combined with the
|
|
53
|
-
* refund-on-failure path, single accounts reached 274 jobs and 100 delivered
|
|
54
|
-
* videos on a 10-credit balance.
|
|
49
|
+
* Briefly set to 0 on 2026-07-22 (free generation moved behind the card-backed
|
|
50
|
+
* trial) and restored to 10 on 2026-07-24 — the acquisition cost of a
|
|
51
|
+
* card-walled first run was judged worse than the give-away.
|
|
55
52
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
53
|
+
* Read this before raising it, because the give-away is real and measured:
|
|
54
|
+
* 23,962 users, 15,021 of whom consumed credits, and only 88 who ever spent
|
|
55
|
+
* past the free grant — a 0.59% conversion on roughly $15k of provider cost.
|
|
56
|
+
* The grant is handed out with no card, no email verification, and no
|
|
57
|
+
* device/IP dedup, so it is farmable by making another Google account. The
|
|
58
|
+
* mitigations that make 10 tolerable are:
|
|
59
|
+
* - the refund-on-failure loop is closed (see failureBilling.ts) — that loop,
|
|
60
|
+
* not the grant itself, is how single accounts reached 274 jobs and 100
|
|
61
|
+
* delivered videos on a 10-credit balance;
|
|
62
|
+
* - the floor is exactly one generation, so a farmed account gets one video.
|
|
60
63
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
64
|
+
* Anything ABOVE 10 needs an anti-abuse gate first (verified email + App Check
|
|
65
|
+
* at minimum).
|
|
63
66
|
*/
|
|
64
|
-
export declare const SIGNUP_GRANT_CREDITS =
|
|
67
|
+
export declare const SIGNUP_GRANT_CREDITS = 10;
|
|
65
68
|
/**
|
|
66
69
|
* Credits granted when a card-backed free trial actually starts (the
|
|
67
|
-
* `isTrialInvoice` branch in payment.service.handleInvoiceSucceeded).
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
70
|
+
* `isTrialInvoice` branch in payment.service.handleInvoiceSucceeded).
|
|
71
|
+
*
|
|
72
|
+
* NOTE: that branch OVERWRITES the credit doc (`total: 10, consumed: 0`), it
|
|
73
|
+
* does not increment. So starting the trial RESETS the balance to 10 available
|
|
74
|
+
* rather than adding 10 to whatever is left of the signup grant — a user who
|
|
75
|
+
* burned their signup 10 gets a fresh 10, but a user who never touched it also
|
|
76
|
+
* ends at 10, not 20. Long-standing behaviour, called out here because
|
|
77
|
+
* SIGNUP_GRANT_CREDITS being non-zero again makes the overlap reachable.
|
|
78
|
+
*
|
|
79
|
+
* Deliberately equal to MIN_CREDITS_PER_PAID_OP so the trial is exactly one
|
|
80
|
+
* full generation of any kind.
|
|
71
81
|
*/
|
|
72
82
|
export declare const TRIAL_GRANT_CREDITS = 10;
|
|
73
83
|
//# sourceMappingURL=creditUnit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditUnit.d.ts","sourceRoot":"","sources":["../../src/globals/creditUnit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,iDAAiD;AACjD,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,0EAA0E;AAC1E,eAAO,MAAM,eAAe,QAAqB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C
|
|
1
|
+
{"version":3,"file":"creditUnit.d.ts","sourceRoot":"","sources":["../../src/globals/creditUnit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,iDAAiD;AACjD,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,0EAA0E;AAC1E,eAAO,MAAM,eAAe,QAAqB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,KAA0B,CAAC"}
|
|
@@ -45,31 +45,41 @@ exports.MIN_CREDITS_PER_PAID_OP = 10;
|
|
|
45
45
|
*/
|
|
46
46
|
exports.MIN_CREDITS_PER_IMAGE_OP = 2;
|
|
47
47
|
/**
|
|
48
|
-
* Credits granted on SIGNUP
|
|
49
|
-
*
|
|
48
|
+
* Credits granted on SIGNUP — one full floored generation ($1.00 of provider
|
|
49
|
+
* cost), no card required. This is the top of the funnel: a new account can try
|
|
50
|
+
* the product once before being asked for anything.
|
|
50
51
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* consumed credits, and only 88 who ever spent past the free grant — a 0.59%
|
|
55
|
-
* conversion on roughly $15k of given-away provider cost. Combined with the
|
|
56
|
-
* refund-on-failure path, single accounts reached 274 jobs and 100 delivered
|
|
57
|
-
* videos on a 10-credit balance.
|
|
52
|
+
* Briefly set to 0 on 2026-07-22 (free generation moved behind the card-backed
|
|
53
|
+
* trial) and restored to 10 on 2026-07-24 — the acquisition cost of a
|
|
54
|
+
* card-walled first run was judged worse than the give-away.
|
|
58
55
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
56
|
+
* Read this before raising it, because the give-away is real and measured:
|
|
57
|
+
* 23,962 users, 15,021 of whom consumed credits, and only 88 who ever spent
|
|
58
|
+
* past the free grant — a 0.59% conversion on roughly $15k of provider cost.
|
|
59
|
+
* The grant is handed out with no card, no email verification, and no
|
|
60
|
+
* device/IP dedup, so it is farmable by making another Google account. The
|
|
61
|
+
* mitigations that make 10 tolerable are:
|
|
62
|
+
* - the refund-on-failure loop is closed (see failureBilling.ts) — that loop,
|
|
63
|
+
* not the grant itself, is how single accounts reached 274 jobs and 100
|
|
64
|
+
* delivered videos on a 10-credit balance;
|
|
65
|
+
* - the floor is exactly one generation, so a farmed account gets one video.
|
|
63
66
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
67
|
+
* Anything ABOVE 10 needs an anti-abuse gate first (verified email + App Check
|
|
68
|
+
* at minimum).
|
|
66
69
|
*/
|
|
67
|
-
exports.SIGNUP_GRANT_CREDITS =
|
|
70
|
+
exports.SIGNUP_GRANT_CREDITS = 10;
|
|
68
71
|
/**
|
|
69
72
|
* Credits granted when a card-backed free trial actually starts (the
|
|
70
|
-
* `isTrialInvoice` branch in payment.service.handleInvoiceSucceeded).
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
73
|
+
* `isTrialInvoice` branch in payment.service.handleInvoiceSucceeded).
|
|
74
|
+
*
|
|
75
|
+
* NOTE: that branch OVERWRITES the credit doc (`total: 10, consumed: 0`), it
|
|
76
|
+
* does not increment. So starting the trial RESETS the balance to 10 available
|
|
77
|
+
* rather than adding 10 to whatever is left of the signup grant — a user who
|
|
78
|
+
* burned their signup 10 gets a fresh 10, but a user who never touched it also
|
|
79
|
+
* ends at 10, not 20. Long-standing behaviour, called out here because
|
|
80
|
+
* SIGNUP_GRANT_CREDITS being non-zero again makes the overlap reachable.
|
|
81
|
+
*
|
|
82
|
+
* Deliberately equal to MIN_CREDITS_PER_PAID_OP so the trial is exactly one
|
|
83
|
+
* full generation of any kind.
|
|
74
84
|
*/
|
|
75
85
|
exports.TRIAL_GRANT_CREDITS = exports.MIN_CREDITS_PER_PAID_OP;
|