Skip to content
Merged
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
5 changes: 5 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
### [1.5.1] 2026-07-27

* Tweak - Added an Activate control beside the Unactivated badge in the product header, with a tier picker when a license covers multiple unactivated tiers.
* Tweak - Split the Feature Manager product list into Installed Features and Available Features sections.

### [1.5.0] 2026-06-25

* Tweak - Update the unified license key input UI to mask its value when in locked state.
Expand Down

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion resources/js/components/organisms/ProductSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ interface ProductSectionProps {
}

/**
* @since TBD Add hideLicenseBadge prop to suppress the header license badge for Available cards.
* @since 1.5.1 Add hideLicenseBadge prop to suppress the header license badge for Available cards.
* @since 1.3.0 Read domain through the getHarborDataValue helper for upgrade URLs.
* @since 1.0.2 Route upgrade CTA to catalog upgrade_url for existing subscribers, purchase_url for new subscribers.
* @since 1.0.1 Show Unactivated badge on tier groups and product header for unactivated licenses.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function SkeletonFeatureRow( { isLast }: { isLast: boolean } ) {
}

/**
* @since TBD Render a nameless header instead of a real product logo/name.
* @since 1.5.1 Render a nameless header instead of a real product logo/name.
* @since 1.0.0
*/
export function ProductSectionSkeleton() {
Expand Down
2 changes: 1 addition & 1 deletion resources/js/components/templates/AppShell.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import { isProductInstalled, isProductOwned } from '@/lib/product-install';
import type { Product } from '@/types/api';

/**
* @since TBD Split products into Installed Features and Available Features sections.
* @since 1.5.1 Split products into Installed Features and Available Features sections.
* @since 1.3.0 Read version through the getHarborDataValue helper.
* @since 1.0.0
*/
Expand Down
4 changes: 2 additions & 2 deletions resources/js/lib/product-install.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import type { Feature, LicenseProduct } from '@/types/api';
*
* @param features The product's features from getFeaturesByProduct().
*
* @since TBD
* @since 1.5.1
*/
export function isProductInstalled( features: Feature[] ): boolean {
return features.some(
Expand All @@ -32,7 +32,7 @@ export function isProductInstalled( features: Feature[] ): boolean {
* @param args.licenseProducts All non-cancelled license products from getLicenseProducts().
* @param args.hasActiveLegacy Whether an active legacy license covers the product.
*
* @since TBD
* @since 1.5.1
*/
export function isProductOwned(
slug: string,
Expand Down
2 changes: 1 addition & 1 deletion resources/js/store/selectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ export const areAllProductsNotActivated = ( state: State ): boolean => {
* current domain is not in the activations list. A unified key can cover more
* than one tier of the same product, so this can return multiple entries.
*
* @since TBD
* @since 1.5.1
*/
export const getUnactivatedLicenseProducts = (
state: State,
Expand Down
2 changes: 1 addition & 1 deletion src/Harbor/Harbor.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class Harbor {
*
* @var string
*/
public const VERSION = '1.5.0';
public const VERSION = '1.5.1';

/**
* Initializes the service provider.
Expand Down