Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Oct 10, 2025

Overview

This PR addresses confusion around when to use "Disable" versus "Revoke" actions for license keys in the dashboard. While both actions deactivate a license key and prevent validation, their intended use cases and semantic meanings were unclear to users, leading to potential misuse.

Fixes #7212

Changes

Dashboard UI Improvements

Added contextual tooltips to all license key action buttons in the Benefits dashboard (LicenseKeysPage.tsx):

  • Enable: "Re-activate this license key to allow validation"
  • Disable: "Temporarily deactivate this key. Can be re-enabled later. Use this for pausing access without permanent revocation."
  • Revoke: "Permanently revoke this key due to subscription cancellation or policy violation. Can be re-enabled if needed."

The tooltips use the existing Radix UI Tooltip component (consistent with other tooltips in the app like BenefitGrantStatus) and are:

  • Keyboard accessible via Tab navigation
  • Screen reader friendly
  • Non-intrusive and appear only on hover/focus
  • Fully compatible with existing button states (loading, variants, etc.)

Documentation Updates

Added a comprehensive "Manage License Keys" section to the license keys documentation explaining:

  • Granted: The license key is active and can be validated by the customer
  • Disabled: Temporary deactivation for pausing access. Use cases include:
    • Temporary account suspensions
    • Payment issues that may be resolved
    • Testing and debugging scenarios
  • Revoked: Lifecycle-tied deactivation for permanent actions. Use cases include:
    • Subscription cancellation
    • Refund issuance
    • Terms of service violations

The documentation clarifies that while both Disabled and Revoked prevent validation, the key difference is intent: Disable is for temporary pauses, while Revoke is for permanent or lifecycle-related deactivation.

Technical Details

  • Uses asChild prop on TooltipTrigger to avoid wrapper div issues
  • Maintains all existing button functionality and props
  • No backend changes required (statuses already exist and function identically at the validation level)
  • Zero breaking changes to existing functionality

Testing

✅ TypeScript compilation passes
✅ ESLint validation passes
✅ Prettier formatting applied
✅ Production build successful

User Impact

Users now have immediate, contextual help when managing license keys, reducing confusion and supporting better decision-making about which action to use in different scenarios.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • o1.ingest.sentry.io
    • Triggering command: node /home/REDACTED/work/polar/polar/clients/apps/web/node_modules/.bin/../next/dist/bin/next build --turbopack (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

The current dashboard interface for managing user license keys presents two separate actions: 'Disable' and 'Revoke', but their differences are unclear to users. This can lead to confusion and misuse, as both actions appear to deactivate the key but may have different intended effects. To resolve this, the PR should:

  1. Provide clear, concise in-dashboard help text (e.g., tooltips, inline explanations, etc.) for both 'Disable' and 'Revoke' actions wherever license keys are managed.
  2. Update or add relevant documentation (README, docs site, or dashboard context help) to explain:
    • What happens when a key is disabled versus revoked
    • The intended use case for each action (when to disable vs. when to revoke)
    • Any implications for the license holder or system behavior
  3. Ensure wording is user-friendly and easily found by dashboard users.

If there is an existing documentation/help system, integrate the clarification there; otherwise, add as appropriate. Please reference the discussion in #7212 for background.

This pull request was created as a result of the following prompt from Copilot chat.

The current dashboard interface for managing user license keys presents two separate actions: 'Disable' and 'Revoke', but their differences are unclear to users. This can lead to confusion and misuse, as both actions appear to deactivate the key but may have different intended effects. To resolve this, the PR should:

  1. Provide clear, concise in-dashboard help text (e.g., tooltips, inline explanations, etc.) for both 'Disable' and 'Revoke' actions wherever license keys are managed.
  2. Update or add relevant documentation (README, docs site, or dashboard context help) to explain:
    • What happens when a key is disabled versus revoked
    • The intended use case for each action (when to disable vs. when to revoke)
    • Any implications for the license holder or system behavior
  3. Ensure wording is user-friendly and easily found by dashboard users.

If there is an existing documentation/help system, integrate the clarification there; otherwise, add as appropriate. Please reference the discussion in #7212 for background.


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

@vercel
Copy link

vercel bot commented Oct 10, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
polar Ignored Ignored Preview Oct 10, 2025 11:05am
polar-sandbox Ignored Ignored Preview Oct 10, 2025 11:05am

Copilot AI changed the title [WIP] Add help text for disable and revoke actions on dashboard Add tooltips to clarify Disable vs Revoke actions for license keys Oct 10, 2025
Copilot AI requested a review from rishi-raj-jain October 10, 2025 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarify the difference between 'Disable' and 'Revoke' for user license keys in the dashboard

2 participants