Skip to content

[service-utils] Add platform, SMS, and pay capabilities to TeamCapabilities type #7210

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

Conversation

jnsdls
Copy link
Member

@jnsdls jnsdls commented May 29, 2025

Add new capabilities to the TeamCapabilities type

This PR extends the TeamCapabilities type in the service-utils package with new fields:

  • Added platform object with properties for:

    • auditLogs
    • ecosystemWallets
    • seats
  • Added SMS capabilities to the auth object:

    sms: {
      domestic: boolean;
      international: boolean;
    }
  • Added pay object with properties for:

    • enabled
    • rateLimit

Also includes a changeset for a patch version bump.


PR-Codex overview

This PR focuses on updating billing plans and capabilities in the application, including renaming plans, modifying types, and adding new features to the billing system.

Detailed summary

  • Updated billing plan names: accelerate to scale, pro added.
  • Modified comments for plan requirements.
  • Enhanced TeamCapabilities type with new features like sms and pay.
  • Adjusted stubs and mocks to reflect new plan structures.
  • Changed UI components to support new billing plans.
  • Removed unused CloudHostedEngineSection component.
  • Updated pricing details for starter, growth, scale, and pro plans.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Summary by CodeRabbit

  • New Features

    • Introduced a new "pro" billing plan tier with updated pricing, descriptions, and features.
    • Expanded team capabilities to include platform features, detailed SMS support, and payment service options.
  • Enhancements

    • Updated pricing plans: removed "accelerate" and introduced "scale" and "pro" plans with revised pricing and features.
    • Improved plan selection and upgrade flows to reflect new plan tiers.
    • Enhanced feature display and tooltips in pricing cards for greater clarity.
  • Bug Fixes

    • Updated UI messaging and invite permissions to align with new billing plan structure.
  • Chores

    • Updated mock data and stubs to support new capability fields and plan tiers.
    • Adjusted documentation and comments to reflect plan changes.

Copy link

vercel bot commented May 29, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
docs-v2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 30, 2025 0:39am
login ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 30, 2025 0:39am
thirdweb_playground ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 30, 2025 0:39am
thirdweb-www ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 30, 2025 0:39am
wallet-ui ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 30, 2025 0:39am

Copy link

changeset-bot bot commented May 29, 2025

🦋 Changeset detected

Latest commit: a068bd9

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@thirdweb-dev/service-utils Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Contributor

coderabbitai bot commented May 29, 2025

Walkthrough

This change restructures the billing and pricing plans across the dashboard, replacing the "accelerate" plan with "scale" and introducing a new "pro" plan. It updates plan features, pricing, and display logic, as well as related type definitions and capability schemas. Additional capabilities are added to the team schema and mocks.

Changes

File(s) Change Summary
apps/dashboard/src/@/components/blocks/pricing-card.tsx Updated pricing card logic and UI: replaced icons, added "pro" plan, removed "accelerate", adjusted tooltips and SKU mappings.
apps/dashboard/src/@/lib/billing.ts Added "plan:pro" to the ProductSKU type.
apps/dashboard/src/app/(app)/login/onboarding/team-onboarding/InviteTeamMembers.tsx Removed "starter" and "accelerate" plans from onboarding, added "pro" plan, updated plan selection and UI logic.
apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/settings/members/InviteSection.tsx Disabled invites for both "free" and "starter" plans, updated upgrade prompts and billing messages.
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/_components.tsx Removed CloudHostedEngineSection component and related conditional rendering for engine plans.
apps/dashboard/src/components/embedded-wallets/Configure/index.tsx Updated comment to reflect "growth or higher" plan requirement for SMS country editing.
apps/dashboard/src/components/settings/Account/Billing/GatedSwitch.stories.tsx Replaced "accelerate" with "scale" in story plan variants and UI.
apps/dashboard/src/components/settings/Account/Billing/Pricing.tsx Removed "accelerate" plan, replaced with "scale" and added "pro" plan; removed ProCard component and updated highlight logic.
apps/dashboard/src/stories/stubs.ts Extended teamStub with new nested capabilities: platform, embeddedWallets.sms, and pay.
apps/dashboard/src/utils/pricing.tsx Overhauled plan hierarchy: removed "accelerate", added "scale" and "pro", updated pricing, features, and selection logic.
packages/service-utils/src/core/api.ts Extended TeamCapabilities type with new groups: platform, embeddedWallets.sms, and pay.
packages/service-utils/src/mocks.ts Updated validTeamResponse mock to include new capabilities: platform, embeddedWallets.sms, and pay.
.changeset/little-pillows-divide.md Added changeset file noting new type capabilities for @thirdweb-dev/service-utils.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant DashboardUI
    participant PricingUtils
    participant TeamCapabilities

    User->>DashboardUI: View pricing or onboarding
    DashboardUI->>PricingUtils: Fetch available plans
    PricingUtils-->>DashboardUI: Return updated plans ("starter", "growth", "scale", "pro")
    DashboardUI->>TeamCapabilities: Check team plan and capabilities
    TeamCapabilities-->>DashboardUI: Return capabilities (including new platform, pay, sms)
    DashboardUI-->>User: Render plans, features, and upgrade options based on new structure
Loading

Possibly related PRs

  • thirdweb-dev/js#7208: Updates pricing plans and related components, reflecting the same restructuring from "accelerate" to "pro" and "scale", with corresponding UI and logic changes.

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 55fba51 and a068bd9.

📒 Files selected for processing (13)
  • .changeset/little-pillows-divide.md (1 hunks)
  • apps/dashboard/src/@/components/blocks/pricing-card.tsx (4 hunks)
  • apps/dashboard/src/@/lib/billing.ts (1 hunks)
  • apps/dashboard/src/app/(app)/login/onboarding/team-onboarding/InviteTeamMembers.tsx (7 hunks)
  • apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/settings/members/InviteSection.tsx (4 hunks)
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/_components.tsx (0 hunks)
  • apps/dashboard/src/components/embedded-wallets/Configure/index.tsx (1 hunks)
  • apps/dashboard/src/components/settings/Account/Billing/GatedSwitch.stories.tsx (3 hunks)
  • apps/dashboard/src/components/settings/Account/Billing/Pricing.tsx (2 hunks)
  • apps/dashboard/src/stories/stubs.ts (3 hunks)
  • apps/dashboard/src/utils/pricing.tsx (2 hunks)
  • packages/service-utils/src/core/api.ts (2 hunks)
  • packages/service-utils/src/mocks.ts (1 hunks)
💤 Files with no reviewable changes (1)
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/_components.tsx
⏰ Context from checks skipped due to timeout of 90000ms (9)
  • GitHub Check: Size
  • GitHub Check: E2E Tests (pnpm, esbuild)
  • GitHub Check: E2E Tests (pnpm, webpack)
  • GitHub Check: Unit Tests
  • GitHub Check: E2E Tests (pnpm, vite)
  • GitHub Check: Lint Packages
  • GitHub Check: Build Packages
  • GitHub Check: Analyze (javascript)
  • GitHub Check: Graphite / mergeability_check
🔇 Additional comments (36)
apps/dashboard/src/@/lib/billing.ts (1)

8-8: Add new "pro" plan SKU
The ProductSKU union correctly includes the "plan:pro" variant, matching the updated backend offerings.

packages/service-utils/src/core/api.ts (3)

52-56: Extend TeamCapabilities with platform group
The new platform object now exposes auditLogs, ecosystemWallets, and seats flags, accurately reflecting the expanded capability set.


89-92: Add SMS sub-capabilities under embeddedWallets
The sms object with domestic and international boolean flags is properly nested within embeddedWallets.


99-102: Introduce pay capabilities
The pay object with enabled and rateLimit fields is correctly defined, enabling fine-grained payment controls.

.changeset/little-pillows-divide.md (1)

1-6: Patch version bump for service-utils
This changeset accurately documents the patch update for @thirdweb-dev/service-utils and succinctly describes the added team capabilities.

apps/dashboard/src/components/embedded-wallets/Configure/index.tsx (1)

184-184: Update gating comment to reflect growth tier
The inline comment now matches authRequiredPlan = "growth", clarifying that SMS country editing requires the growth plan or above.

apps/dashboard/src/components/settings/Account/Billing/GatedSwitch.stories.tsx (2)

30-32: Replace accelerate default with scale
The requiredPlan type and initial state now use "scale", aligning the story with the new "scale" plan semantics.


41-42: Add "scale" to plan variants
Including "scale" in the plans array ensures the story covers the newly introduced plan tier.

apps/dashboard/src/stories/stubs.ts (3)

60-64: LGTM! Platform capabilities added correctly.

The new platform capability with auditLogs, ecosystemWallets, and seats flags follows the established pattern and aligns with the PR objectives.


93-96: LGTM! SMS capabilities added to embedded wallets.

The SMS capability extension with domestic and international flags is properly nested within embeddedWallets and follows the existing structure.


107-110: LGTM! Pay capabilities added correctly.

The pay capability with enabled and rateLimit properties follows the established pattern used by other capabilities in the stub.

apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/settings/members/InviteSection.tsx (4)

88-91: LGTM! Invitation restrictions updated for starter plan.

The logic correctly extends invitation restrictions to include the "starter" plan in addition to the "free" plan, which aligns with the plan restructuring mentioned in the AI summary.


114-114: LGTM! Consistent plan restriction logic.

The condition correctly checks for both "free" and "starter" plans, maintaining consistency with the invitation enablement logic above.


133-133: LGTM! Enhanced upgrade flow with query parameters.

The upgrade link now includes showPlans=true&highlight=growth parameters, which will improve the user experience by directly showing available plans and highlighting the recommended option.


153-162: LGTM! Simplified billing message.

The billing message has been simplified to always show a generic pricing link, which provides a consistent experience regardless of the current plan.

packages/service-utils/src/mocks.ts (3)

96-99: LGTM! SMS capabilities added to mock data.

The SMS capability within embeddedWallets is correctly added to the mock team response, ensuring consistency with the updated type definitions.


106-109: LGTM! Pay capabilities added to mock data.

The pay capability with enabled and rateLimit properties is properly added to maintain consistency between mock data and actual API responses.


110-114: LGTM! Platform capabilities added to mock data.

The platform capability with all required flags (auditLogs, ecosystemWallets, seats) is correctly implemented in the mock response.

apps/dashboard/src/@/components/blocks/pricing-card.tsx (5)

7-7: LGTM! Icon import updated appropriately.

The import change from CircleDollarSignIcon to DollarSignIcon aligns with the updated icon usage in the FeatureItem component.


108-110: LGTM! Enhanced pricing display with "Starting at" label.

The conditional "Starting at" label improves clarity for plans with variable pricing, making it clear to users that the displayed price is the minimum cost.


113-113: LGTM! Improved price formatting.

The toLocaleString() method will format large numbers with proper thousand separators, improving readability for higher-priced plans.


190-192: LGTM! Plan-to-SKU mapping updated for new billing structure.

The mapping correctly updates to reflect the new plan hierarchy:

  • "pro" now maps to "plan:pro"
  • "accelerate" is set to undefined (likely being phased out)

This aligns with the broader plan restructuring mentioned in the AI summary.


207-213: LGTM! Enhanced feature item display with integrated tooltip.

The updated logic improves the user experience by:

  • Using DollarSignIcon with tooltip for pricing-related features (array format)
  • Using CheckIcon for standard features
  • Integrating the tooltip directly on the icon rather than as a separate element

This maintains the same functionality while providing a cleaner implementation.

apps/dashboard/src/app/(app)/login/onboarding/team-onboarding/InviteTeamMembers.tsx (4)

100-101: LGTM: Upgrade button logic updated correctly.

The condition now appropriately shows the upgrade button for both "free" and "starter" billing plans, which aligns with the new plan structure where these plans would benefit from upgrading.


158-159: LGTM: Plan selection state updated correctly.

The state type has been properly updated to reflect the new available plans ("growth", "scale", "pro") and removes the deprecated plans. The default value of "growth" is appropriate as the entry-level paid plan.


185-227: LGTM: Plan components restructured appropriately.

The plan components have been correctly updated:

  • Removed the deprecated "accelerate" plan
  • Added new "scale" and "pro" plans with proper tracking events
  • Consistent naming and structure across all plan components

267-277: LGTM: Mobile UI updated consistently.

The mobile tab buttons and conditional rendering have been properly updated to match the new plan structure. The removal of "starter" and "accelerate" tabs and addition of "pro" tab maintains UI consistency.

apps/dashboard/src/components/settings/Account/Billing/Pricing.tsx (3)

83-88: LGTM: Highlight logic updated appropriately.

The highlight conditions have been properly restructured:

  • The scale highlight now correctly includes both "accelerate" and "growth" users, ensuring existing customers see appropriate upgrade paths
  • The new pro highlight condition follows the same pattern as other plans

This provides a smooth migration path for existing customers.


139-165: LGTM: Pricing cards updated consistently.

The pricing card components have been correctly updated:

  • "Scale" plan properly replaces "accelerate"
  • New "Pro" plan added with appropriate properties
  • All cards maintain consistent structure and prop usage

176-177:

❓ Verification inconclusive

Verify the contact us logic change.

The logic was changed to only show "Contact us" when the CURRENT plan is "pro", removing the previous condition that also checked if the TARGET plan was "pro".

This change needs verification to ensure it aligns with business requirements. Let me check if this pattern is used elsewhere:


🏁 Script executed:

#!/bin/bash
# Search for similar contact us logic patterns in the codebase
rg -A 5 -B 5 "Contact us" --type tsx --type ts

Length of output: 76


Let's broaden the search and inspect the surrounding logic directly.


🏁 Script executed:

#!/bin/bash
# 1. Find all occurrences of "Contact us" in .tsx/.ts files
rg -n "Contact us" -g "*.tsx" -g "*.ts"

# 2. Find any use of targetPlan comparisons
rg -n "targetPlan" -g "*.tsx" -g "*.ts"

# 3. Dump the Pricing.tsx around the contact-us logic for full context
sed -n '160,200p' apps/dashboard/src/components/settings/Account/Billing/Pricing.tsx

Length of output: 1819


Confirm "Contact us" Logic Change

I only found this “Contact us” CTA in apps/dashboard/src/components/settings/Account/Billing/Pricing.tsx (around lines 176–179). With the new guard:

// if the CURRENT plan is pro, show contact us link
if (currentPlan === "pro") {
  return { label: "Contact us", href: PRO_CONTACT_US_URL, type: "link" };
}

we will now:

  • Show Contact us on the Pro card for any team already on Pro (even if they’re scheduled to cancel),
  • Never hit the subsequent renew branch for scheduled cancels on Pro,
  • And no longer special-case upgrades to Pro via “Contact us.”

Please verify that dropping the targetPlan === "pro" condition aligns with the product requirements.

apps/dashboard/src/utils/pricing.tsx (6)

6-6: LGTM: Filter logic updated correctly.

The exclusion list has been properly updated to exclude "accelerate" instead of "pro", which aligns with the plan restructuring where "accelerate" is being deprecated and "pro" is now a selectable plan.


13-13: LGTM: New pricing property added.

The isStartingPriceOnly property is a good addition for plans with variable pricing (like the Pro plan). This allows for flexible pricing display in the UI.


21-36: LGTM: Starter plan updated appropriately.

The Starter plan updates look reasonable:

  • Price reduction to $5 makes it more accessible
  • Description targets individual developers appropriately
  • Feature list includes essential features for getting started

37-49: LGTM: Growth plan positioned well.

The Growth plan updates are appropriate:

  • Price increase to $99 reflects enhanced value proposition
  • Features focus on team collaboration and production needs
  • Clear differentiation from Starter plan

50-70: LGTM: Scale plan well-structured.

The new Scale plan effectively replaces the accelerate plan with:

  • Appropriate pricing at $499 for mid-size businesses
  • Enterprise-focused features like Slack support and audit logs
  • Clear add-on structure for ecosystem wallets and dedicated infrastructure

71-86: LGTM: Pro plan configured appropriately.

The Pro plan is well-positioned for enterprise customers:

  • The isStartingPriceOnly: true flag correctly indicates variable pricing
  • Features emphasize white-glove service and customization
  • Price point and features target large organizations appropriately
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@jnsdls jnsdls marked this pull request as ready for review May 29, 2025 22:48
@jnsdls jnsdls requested a review from a team as a code owner May 29, 2025 22:48
Copy link
Member Author

jnsdls commented May 29, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge-queue - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

Copy link

codecov bot commented May 29, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 55.63%. Comparing base (7c95211) to head (d92ebb9).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #7210   +/-   ##
=======================================
  Coverage   55.63%   55.63%           
=======================================
  Files         908      908           
  Lines       58546    58546           
  Branches     4127     4127           
=======================================
  Hits        32572    32572           
  Misses      25868    25868           
  Partials      106      106           
Flag Coverage Δ
packages 55.63% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

github-actions bot commented May 29, 2025

size-limit report 📦

Path Size Loading time (3g) Running time (snapdragon) Total time
thirdweb (esm) 62.11 KB (0%) 1.3 s (0%) 156 ms (+82.88% 🔺) 1.4 s
thirdweb (cjs) 345.28 KB (0%) 7 s (0%) 591 ms (+0.16% 🔺) 7.5 s
thirdweb (minimal + tree-shaking) 5.7 KB (0%) 114 ms (0%) 46 ms (+1004.69% 🔺) 160 ms
thirdweb/chains (tree-shaking) 531 B (0%) 11 ms (0%) 32 ms (+1014.53% 🔺) 42 ms
thirdweb/react (minimal + tree-shaking) 19.52 KB (0%) 391 ms (0%) 71 ms (+333.63% 🔺) 461 ms

};
engineCloud: {
enabled: boolean;
mainnetEnabled: boolean;
rateLimit: number;
};
pay: {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just realize i don't know if we're honoring rate limits properly in the UB service cc @gregfromstl

@graphite-app graphite-app bot changed the base branch from _Dashboard_update_pricing_plans_and_UI_components to graphite-base/7210 May 30, 2025 00:16
@graphite-app graphite-app bot force-pushed the graphite-base/7210 branch from 3f57dc6 to 7c95211 Compare May 30, 2025 00:24
@graphite-app graphite-app bot force-pushed the _service-utils_Add_platform_SMS_and_pay_capabilities_to_TeamCapabilities_type branch from a068bd9 to 2601e1a Compare May 30, 2025 00:24
@graphite-app graphite-app bot changed the base branch from graphite-base/7210 to main May 30, 2025 00:25
@graphite-app graphite-app bot force-pushed the _service-utils_Add_platform_SMS_and_pay_capabilities_to_TeamCapabilities_type branch from 2601e1a to d92ebb9 Compare May 30, 2025 00:25
@jnsdls jnsdls force-pushed the _service-utils_Add_platform_SMS_and_pay_capabilities_to_TeamCapabilities_type branch from d92ebb9 to a068bd9 Compare May 30, 2025 00:54
@jnsdls jnsdls merged commit 86fd445 into main May 30, 2025
34 checks passed
@jnsdls jnsdls deleted the _service-utils_Add_platform_SMS_and_pay_capabilities_to_TeamCapabilities_type branch May 30, 2025 01:01
@joaquim-verges joaquim-verges mentioned this pull request May 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Dashboard Involves changes to the Dashboard. packages
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants