Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#3687: Implement a Pro feature preview for the graph #3714

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ Yes. All features are free to use on all repos, **except** for `Pro` features, w

While GitLens offers a remarkable set of free features, a subset of `Pro` features tailored for professional developers and teams, require a trial or paid plan for use on privately-hosted repos — use on local or publicly-hosted repos is free for everyone. Additionally `Preview` features may require a paid plan in the future and some, if cloud-backed, require a GitKraken account.

Preview `Pro` features instantly for free for 3 days without an account, or start a free GitLens Pro trial to get an additional 7 days and gain access to `Pro` features to experience the full power of GitLens.
Preview `Pro` features instantly for free for 3 days without an account, or start a free GitLens Pro trial to get an additional 14 days and gain access to `Pro` features to experience the full power of GitLens.

## Are `Pro` and `Preview` features free to use?

Expand Down
84 changes: 21 additions & 63 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5726,11 +5726,6 @@
"title": "Sign Up for GitKraken...",
"category": "GitLens"
},
{
"command": "gitlens.plus.startPreviewTrial",
"title": "Preview Pro",
"category": "GitLens"
},
{
"command": "gitlens.plus.reactivateProTrial",
"title": "Reactivate Pro Trial",
Expand Down Expand Up @@ -10276,10 +10271,6 @@
"command": "gitlens.plus.signUp",
"when": "!gitlens:plus"
},
{
"command": "gitlens.plus.startPreviewTrial",
"when": "!gitlens:plus"
},
{
"command": "gitlens.plus.reactivateProTrial",
"when": "gitlens:plus:state == 5"
Expand Down Expand Up @@ -19322,7 +19313,7 @@
},
{
"view": "gitlens.views.drafts",
"contents": "Cloud Patches ᴘʀᴇᴠɪᴇᴡ — easily and securely share code with your teammates or other developers, accessible from anywhere, streamlining your workflow with better collaboration."
"contents": "Cloud Patches ᴘʀᴇᴠɪᴇᴡ — easily and securely share code with your teammates and other developers without adding noise to your repository."
},
{
"view": "gitlens.views.drafts",
Expand All @@ -19331,16 +19322,17 @@
},
{
"view": "gitlens.views.drafts",
"contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22cloud-patches%22%7D)\n\nStart your free 7-day Pro trial to try Cloud Patches and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22cloud-patches%22%7D).",
"contents": "Preview feature - requires an account and may require [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/) in the future.\n[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22cloud-patches%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22cloud-patches%22%7D).",
"when": "!gitlens:plus"
},
{
"view": "gitlens.views.drafts",
"contents": "Preview feature ☁️ — requires an account and may require a paid plan in the future."
"view": "gitlens.views.launchpad",
"contents": "[Launchpad](command:gitlens.views.launchpad.info \"Learn about Launchpad\") — organizes your pull requests into actionable groups to help you focus and keep your team unblocked."
},
{
"view": "gitlens.views.launchpad",
"contents": "[Launchpad](command:gitlens.views.launchpad.info \"Learn about Launchpad\") — organizes your pull requests into actionable groups to help you focus and keep your team unblocked."
"contents": "Pro feature — requires a paid plan for use on privately-hosted repos.",
"when": "!gitlens:plus"
},
{
"view": "gitlens.views.scm.grouped",
Expand Down Expand Up @@ -19369,23 +19361,13 @@
},
{
"view": "gitlens.views.launchpad",
"contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nContinuing gives you 3 days to preview Launchpad and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D) for full access to Pro features.",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 0"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nContinuing gives you 3 days to preview Launchpad and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D) for full access to Pro features.",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 0 && gitlens:views:scm:grouped:view == launchpad"
},
{
"view": "gitlens.views.launchpad",
"contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nStart your free 7-day Pro trial to try Launchpad and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 2"
"contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && (gitlens:plus:state == 2 || gitlens:plus:state == 0)"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nStart your free 7-day Pro trial to try Launchpad and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 2 && gitlens:views:scm:grouped:view == launchpad"
"contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && (gitlens:plus:state == 0 || gitlens:plus:state == 2) && gitlens:views:scm:grouped:view == launchpad"
},
{
"view": "gitlens.views.launchpad",
Expand Down Expand Up @@ -19429,19 +19411,14 @@
},
{
"view": "gitlens.views.launchpad",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 7 days!",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 14 days!",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 5"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 7 days!",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 14 days!",
"when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 5 && gitlens:views:scm:grouped:view == launchpad"
},
{
"view": "gitlens.views.launchpad",
"contents": "Pro feature — requires a paid plan for use on privately-hosted repos.",
"when": "!gitlens:launchpad:connect"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "Pro feature — requires a paid plan for use on privately-hosted repos.",
Expand All @@ -19458,7 +19435,7 @@
},
{
"view": "gitlens.views.workspaces",
"contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22workspaces%22%7D)\n\nStart your free 7-day Pro trial to try GitKraken (GK) Workspaces and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22workspaces%22%7D).",
"contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22workspaces%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22workspaces%22%7D).",
"when": "!gitlens:plus"
},
{
Expand All @@ -19467,7 +19444,7 @@
},
{
"view": "gitlens.views.worktrees",
"contents": "[Worktrees](https://help.gitkraken.com/gitlens/side-bar/#worktrees-view-pro) ᴾᴿᴼ — minimize context switching by allowing you to work on multiple branches simultaneously."
"contents": "[Worktrees](https://help.gitkraken.com/gitlens/side-bar/#worktrees-view-pro) ᴾᴿᴼ — minimize context switching by working on multiple branches simultaneously."
},
{
"view": "gitlens.views.scm.grouped",
Expand Down Expand Up @@ -19496,27 +19473,17 @@
},
{
"view": "gitlens.views.worktrees",
"contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nContinuing gives you 3 days to preview Worktrees and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D) for full access to Pro features.",
"when": "gitlens:plus:required && gitlens:plus:state == 0"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nContinuing gives you 3 days to preview Worktrees and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D) for full access to Pro features.",
"when": "gitlens:plus:required && gitlens:plus:state == 0 && gitlens:views:scm:grouped:view == worktrees"
},
{
"view": "gitlens.views.worktrees",
"contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nStart your free 7-day Pro trial to try Worktrees and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).",
"when": "gitlens:plus:required && gitlens:plus:state == 2"
"contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).",
"when": "gitlens:plus:required && (gitlens:plus:state == 2 || gitlens:plus:state == 0)"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nStart your free 7-day Pro trial to try Worktrees and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).",
"when": "gitlens:plus:required && gitlens:plus:state == 2 && gitlens:views:scm:grouped:view == worktrees"
"contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).",
"when": "gitlens:plus:required && (gitlens:plus:state == 0 || gitlens:plus:state == 2) && gitlens:views:scm:grouped:view == worktrees"
},
{
"view": "gitlens.views.worktrees",
"contents": "[Upgrade to Pro](command:gitlens.plus.upgrade?%7B%22source%22%3A%22worktrees%22%7D)",
"contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro?%7B%22source%22%3A%22worktrees%22%7D).\n\n[Upgrade to Pro](command:gitlens.plus.upgrade?%7B%22source%22%3A%22worktrees%22%7D)",
"when": "gitlens:plus:required && gitlens:plus:state == 4"
},
{
Expand Down Expand Up @@ -19544,30 +19511,21 @@
"contents": "Save more than 55% during our GitLens 16 sale!",
"when": "gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gitlens16 && gitlens:views:scm:grouped:view == worktrees"
},
{
"view": "gitlens.views.worktrees",
"contents": "Your Pro trial has ended. Please upgrade for full access to Worktrees and other Pro features.",
"when": "gitlens:plus:required && gitlens:plus:state == 4"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "Your Pro trial has ended. Please upgrade for full access to Worktrees and other Pro features.",
"when": "gitlens:plus:required && gitlens:plus:state == 4 && gitlens:views:scm:grouped:view == worktrees"
},
{
"view": "gitlens.views.worktrees",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 7 days!",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 14 days!",
"when": "gitlens:plus:required && gitlens:plus:state == 5"
},
{
"view": "gitlens.views.scm.grouped",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 7 days!",
"contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 14 days!",
"when": "gitlens:plus:required && gitlens:plus:state == 5 && gitlens:views:scm:grouped:view == worktrees"
},
{
"view": "gitlens.views.worktrees",
"contents": "Pro feature — requires a paid plan for use on privately-hosted repos."
},
{
"view": "gitlens.views.scm.grouped",
"contents": "Pro feature — requires a paid plan for use on privately-hosted repos.",
Expand Down
4 changes: 2 additions & 2 deletions src/commands/quickCommand.steps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2637,9 +2637,9 @@ export async function* ensureAccessStep<
const promo = getApplicablePromo(access.subscription.current.state, 'gate');
const detail = promo?.quickpick.detail;

placeholder = 'Pro feature — requires a trial or paid plan for use on privately-hosted repos';
placeholder = 'Pro feature — requires a trial or GitLens Pro for use on privately-hosted repos';
if (isSubscriptionPaidPlan(access.subscription.required) && access.subscription.current.account != null) {
placeholder = 'Pro feature — requires a paid plan for use on privately-hosted repos';
placeholder = 'Pro feature — requires GitLens Pro for use on privately-hosted repos';
directives.push(
createDirectiveQuickPickItem(Directive.RequiresPaidSubscription, true, { detail: detail }),
createQuickPickSeparator(),
Expand Down
6 changes: 5 additions & 1 deletion src/constants.storage.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { GraphBranchesVisibility, ViewShowBranchComparison } from './config';
import type { AIProviders } from './constants.ai';
import type { IntegrationId } from './constants.integrations';
import type { TrackedUsage, TrackedUsageKeys } from './constants.telemetry';
import type { Sources, TrackedUsage, TrackedUsageKeys } from './constants.telemetry';
import type { GroupableTreeViewTypes } from './constants.views';
import type { Environment } from './container';
import type { Subscription } from './plus/gk/account/subscription';
Expand Down Expand Up @@ -78,6 +78,10 @@ export type GlobalStorage = {
'graph:searchMode': StoredGraphSearchMode;
'views:scm:grouped:welcome:dismissed': boolean;
} & { [key in `confirm:ai:tos:${AIProviders}`]: boolean } & {
[key in `plus:featurePreviewTrial:${Sources}:consumedDays`]: { startedOn: string; expiresOn: string }[];
} & {
[key in `confirm:ai:tos:${AIProviders}`]: boolean;
} & {
[key in `provider:authentication:skip:${string}`]: boolean;
} & { [key in `gk:${string}:checkin`]: Stored<StoredGKCheckInResponse> } & {
[key in `gk:${string}:organizations`]: Stored<StoredOrganization[]>;
Expand Down
2 changes: 1 addition & 1 deletion src/constants.subscription.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const proPreviewLengthInDays = 3;
export const proTrialLengthInDays = 7;
export const proTrialLengthInDays = 14;

export type PromoKeys = 'gitlens16' | 'pro50';

Expand Down
3 changes: 2 additions & 1 deletion src/constants.telemetry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,8 @@ export type TelemetryEvents = {
| 'resend-verification'
| 'pricing'
| 'start-preview-trial'
| 'upgrade';
| 'upgrade'
| `start-${Sources}-preview-trial`;
}
| {
action: 'visibility';
Expand Down
1 change: 1 addition & 0 deletions src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ export const urls = Object.freeze({
interactiveCodeHistory: `https://help.gitkraken.com/gitlens/gitlens-start-here/?${utm}#interactive-code-history`,
startIntegrations: `https://help.gitkraken.com/gitlens/gitlens-start-here/?${utm}#improve-workflows-with-integrations`,
streamlineCollaboration: `https://help.gitkraken.com/gitlens/gitlens-start-here/?${utm}#streamline-collaboration`,
gitlensProVsCommunity: `https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/?${utm}`,
});

export type WalkthroughSteps =
Expand Down
Loading
Loading