{/* Display the title only when pls.length > 0 (i.e., at least one PL row is added) */}
{pls.length > 0 && (
- Prefix List
+ Prefix List
{getFeatureChip({
isFirewallRulesetsPrefixlistsFeatureEnabled,
isFirewallRulesetsPrefixListsBetaEnabled,
@@ -342,7 +371,10 @@ export const MultiplePrefixListSelect = React.memo(
);
@@ -522,13 +522,13 @@ export const generateAddressesLabelV2 = (
{hasMore && (
({
minWidth: '248px',
- padding: `${theme.spacingFunction(16)} !important`,
+ paddingX: '0 !important',
+ paddingY: `${theme.spacingFunction(16)} !important`,
}),
},
}}
From 488dfc904cde2901d37c392dd110ca0da11e142b Mon Sep 17 00:00:00 2001
From: Purvesh Makode
Date: Mon, 8 Dec 2025 15:24:19 +0530
Subject: [PATCH 84/91] upcoming: [UIE-9738] - Handle special PLs in PrefixList
drawer (#13172)
* Save progress
* Save progress
* Save progress
* Add more changes
* Add comments
* Added changeset: Handle special PLs in PrefixList drawer
* Add comments
* Add ids to Checkbox
---
...r-13172-upcoming-features-1764950932547.md | 5 +
.../Rules/FirewallPrefixListDrawer.test.tsx | 120 ++++++-
.../Rules/FirewallPrefixListDrawer.tsx | 325 +++++++-----------
.../Rules/FirewallPrefixListIPSection.tsx | 72 ++++
.../Rules/MultiplePrefixListSelect.tsx | 48 ++-
.../Firewalls/FirewallDetail/Rules/shared.ts | 52 ++-
packages/manager/src/mocks/serverHandlers.ts | 31 +-
7 files changed, 418 insertions(+), 235 deletions(-)
create mode 100644 packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md
create mode 100644 packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListIPSection.tsx
diff --git a/packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md b/packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md
new file mode 100644
index 00000000000..38a2c3a6fc3
--- /dev/null
+++ b/packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Upcoming Features
+---
+
+Handle special PLs in PrefixList drawer ([#13172](https://github.com/linode/manager/pull/13172))
diff --git a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.test.tsx b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.test.tsx
index fa248f6675f..0bd18ab2a35 100644
--- a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.test.tsx
+++ b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.test.tsx
@@ -8,6 +8,7 @@ import { renderWithTheme } from 'src/utilities/testHelpers';
import * as shared from '../../shared';
import { FirewallPrefixListDrawer } from './FirewallPrefixListDrawer';
+import * as rulesShared from './shared';
import { PREFIXLIST_MARKED_FOR_DELETION_TEXT } from './shared';
import type { FirewallPrefixListDrawerProps } from './FirewallPrefixListDrawer';
@@ -34,6 +35,7 @@ vi.mock('@linode/utilities', async () => {
});
const spy = vi.spyOn(shared, 'useIsFirewallRulesetsPrefixlistsEnabled');
+const combineSpy = vi.spyOn(rulesShared, 'combinePrefixLists');
//
// Helper to compute expected UI values/text
@@ -76,7 +78,7 @@ const computeExpectedElements = (
return { title, button, label };
};
-describe('PrefixListDrawer', () => {
+describe('FirewallPrefixListDrawer', () => {
beforeEach(() => {
spy.mockReturnValue({
isFirewallRulesetsPrefixlistsFeatureEnabled: true,
@@ -143,18 +145,26 @@ describe('PrefixListDrawer', () => {
it.each(drawerProps)(
'renders correct UI for category:$category, contextType:$context.type and modeViewedFrom:$context.modeViewedFrom',
- ({ category, context }) => {
+ ({ category, context, selectedPrefixListLabel }) => {
+ const mockData = firewallPrefixListFactory.build({
+ name: selectedPrefixListLabel,
+ });
queryMocks.useAllFirewallPrefixListsQuery.mockReturnValue({
- data: [firewallPrefixListFactory.build()],
+ data: [mockData],
});
+ combineSpy.mockReturnValue([
+ ...rulesShared.SPECIAL_PREFIX_LISTS,
+ mockData,
+ ]);
+
const { getByText, getByRole } = renderWithTheme(
);
@@ -200,12 +210,17 @@ describe('PrefixListDrawer', () => {
it.each(deletionTestCases)('%s', async (_, deletedTimeStamp) => {
const mockPrefixList = firewallPrefixListFactory.build({
+ name: 'pl-test',
deleted: deletedTimeStamp,
});
queryMocks.useAllFirewallPrefixListsQuery.mockReturnValue({
data: [mockPrefixList],
});
+ combineSpy.mockReturnValue([
+ ...rulesShared.SPECIAL_PREFIX_LISTS,
+ mockPrefixList,
+ ]);
const { getByText, getByTestId, findByText, queryByText } = renderWithTheme(
{
queryMocks.useAllFirewallPrefixListsQuery.mockReturnValue({
data: [mockPrefixList],
});
+ combineSpy.mockReturnValue([
+ ...rulesShared.SPECIAL_PREFIX_LISTS,
+ mockPrefixList,
+ ]);
const { getByTestId } = renderWithTheme(
{
}
);
});
+
+describe('FirewallPrefixListDrawer - Special "" Prefix Lists', () => {
+ beforeEach(() => {
+ spy.mockReturnValue({
+ isFirewallRulesetsPrefixlistsFeatureEnabled: true,
+ isFirewallRulesetsPrefixListsBetaEnabled: false,
+ isFirewallRulesetsPrefixListsLAEnabled: false,
+ isFirewallRulesetsPrefixListsGAEnabled: false,
+ });
+ });
+ const specialPrefixListDescription =
+ 'System-defined PrefixLists, such as pl::vpcs: and pl::subnets:, for VPC interface firewalls are dynamic and update automatically. They manage access to and from the interface for addresses within the interface’s VPC or VPC subnet.';
+ const plRuleRef = { inIPv4Rule: true, inIPv6Rule: true };
+ const context: FirewallPrefixListDrawerProps['context'][] = [
+ {
+ type: 'rule',
+ plRuleRef,
+ },
+ {
+ modeViewedFrom: 'create',
+ type: 'ruleset',
+ plRuleRef,
+ },
+ { modeViewedFrom: 'edit', type: 'rule', plRuleRef },
+ { modeViewedFrom: 'view', type: 'ruleset', plRuleRef },
+ ];
+ const specialPLsTestCases = [
+ {
+ name: 'pl::vpcs:',
+ description: specialPrefixListDescription,
+ context: context[0],
+ },
+ {
+ name: 'pl::subnets:',
+ description: specialPrefixListDescription,
+ context: context[1],
+ },
+ {
+ name: 'pl::vpcs:',
+ description: specialPrefixListDescription,
+ context: context[2],
+ },
+ {
+ name: 'pl::subnets:',
+ description: specialPrefixListDescription,
+ context: context[3],
+ },
+ ];
+
+ it.each(specialPLsTestCases)(
+ 'renders only Name and Description for special PL: $name, contextType: $context.type and modeViewedFrom: $context.modeViewedFrom',
+ ({ name, description, context }) => {
+ // API returns no matches, special PL logic must handle it
+ queryMocks.useAllFirewallPrefixListsQuery.mockReturnValue({
+ data: [],
+ });
+ combineSpy.mockReturnValue([...rulesShared.SPECIAL_PREFIX_LISTS]);
+
+ const { getByText, queryByText } = renderWithTheme(
+
+ );
+
+ const { label } = computeExpectedElements('inbound', context);
+
+ // Name and Description should be visible
+ expect(getByText(label)).toBeVisible(); // First label (Prefix List Name: OR Name:)
+ expect(getByText(name)).toBeVisible();
+
+ expect(getByText('Description:')).toBeVisible();
+ expect(getByText(description)).toBeVisible();
+
+ // All other fields must be hidden
+ const hiddenFields = [
+ 'ID:',
+ 'Type:',
+ 'Visibility:',
+ 'Version:',
+ 'Created:',
+ 'Updated:',
+ ];
+
+ hiddenFields.forEach((label) => {
+ expect(queryByText(label)).not.toBeInTheDocument();
+ });
+ }
+ );
+});
diff --git a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.tsx b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.tsx
index 845b5486e63..b846482f8b2 100644
--- a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.tsx
+++ b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListDrawer.tsx
@@ -1,13 +1,5 @@
import { useAllFirewallPrefixListsQuery } from '@linode/queries';
-import {
- Box,
- Button,
- Chip,
- Drawer,
- Paper,
- Stack,
- TooltipIcon,
-} from '@linode/ui';
+import { Box, Button, Drawer, Stack, TooltipIcon } from '@linode/ui';
import { capitalize } from '@linode/utilities';
import * as React from 'react';
@@ -19,8 +11,11 @@ import {
getFeatureChip,
useIsFirewallRulesetsPrefixlistsEnabled,
} from '../../shared';
+import { PrefixListIPSection } from './FirewallPrefixListIPSection';
import {
+ combinePrefixLists,
getPrefixListType,
+ isSpecialPrefixList,
PREFIXLIST_MARKED_FOR_DELETION_TEXT,
} from './shared';
import {
@@ -58,15 +53,31 @@ export const FirewallPrefixListDrawer = React.memo(
isFirewallRulesetsPrefixListsBetaEnabled,
isFirewallRulesetsPrefixListsGAEnabled,
} = useIsFirewallRulesetsPrefixlistsEnabled();
+
+ const isPrefixListSpecial = isSpecialPrefixList(selectedPrefixListLabel);
+
const { classes } = useStyles();
- const { data, error, isFetching } = useAllFirewallPrefixListsQuery(
- isFirewallRulesetsPrefixlistsFeatureEnabled,
+ const {
+ data: apiPL,
+ error,
+ isFetching,
+ } = useAllFirewallPrefixListsQuery(
+ // @TODO: Temporarily disabling this API call for `isPrefixListSpecial`
+ // since the API doesn't yet support special Prefix Lists.
+ // Remove this check and refactor related logic once API support is added.
+ isFirewallRulesetsPrefixlistsFeatureEnabled && !isPrefixListSpecial,
{},
{ name: selectedPrefixListLabel }
);
- const prefixListDetails = data?.[0];
+ // Merge with hardcoded special PLs
+ const prefixLists = React.useMemo(() => combinePrefixLists(apiPL), [apiPL]);
+
+ // Get the actual prefix list by name (name is unique)
+ const prefixListDetails = prefixLists.find(
+ (pl) => pl.name === selectedPrefixListLabel
+ );
const isIPv4Supported =
prefixListDetails?.ipv4 !== null && prefixListDetails?.ipv4 !== undefined;
@@ -125,6 +136,77 @@ export const FirewallPrefixListDrawer = React.memo(
? 'Name'
: 'Prefix List Name';
+ const drawerFooter = (
+ ({
+ marginTop: theme.spacingFunction(16),
+ display: 'flex',
+ justifyContent: backButtonText ? 'flex-start' : 'flex-end',
+ })}
+ >
+
+
+ );
+
+ // For normal Prefix Lists: display all fields.
+ // For special Prefix Lists: display only 'Name' or 'Prefix List Name' and 'Description'.
+ const fields = [
+ {
+ label: plFieldLabel,
+ value: prefixListDetails?.name ?? selectedPrefixListLabel,
+ },
+ !isPrefixListSpecial && {
+ label: 'ID',
+ value: prefixListDetails?.id,
+ copy: true,
+ },
+ {
+ label: 'Description',
+ value: prefixListDetails?.description,
+ column: true,
+ },
+ !isPrefixListSpecial &&
+ prefixListDetails?.name && {
+ label: 'Type',
+ value: getPrefixListType(prefixListDetails.name),
+ },
+ !isPrefixListSpecial &&
+ prefixListDetails?.visibility && {
+ label: 'Visibility',
+ value: capitalize(prefixListDetails.visibility),
+ },
+ !isPrefixListSpecial && {
+ label: 'Version',
+ value: prefixListDetails?.version,
+ },
+ !isPrefixListSpecial &&
+ prefixListDetails?.created && {
+ label: 'Created',
+ value: ,
+ },
+ !isPrefixListSpecial &&
+ prefixListDetails?.updated && {
+ label: 'Updated',
+ value: ,
+ },
+ ].filter(Boolean) as {
+ column?: boolean;
+ copy?: boolean;
+ label: string;
+ value: React.ReactNode | string;
+ }[];
+
return (
{prefixListDetails && (
<>
- {[
- {
- label: plFieldLabel,
- value: prefixListDetails.name,
- },
- {
- label: 'ID',
- value: prefixListDetails.id,
- copy: true,
- },
- {
- label: 'Description',
- value: prefixListDetails.description,
- column: true,
- },
- {
- label: 'Type',
- value: getPrefixListType(prefixListDetails.name),
- },
- {
- label: 'Visibility',
- value: capitalize(prefixListDetails.visibility),
- },
- {
- label: 'Version',
- value: prefixListDetails.version,
- },
- {
- label: 'Created',
- value: ,
- },
- {
- label: 'Updated',
- value: ,
- },
- ].map((item, idx) => (
+ {fields.map((item, idx) => (
{item.label && (
- {item.label}:
+ {item.label}:
)}
{item.value}
@@ -203,7 +250,7 @@ export const FirewallPrefixListDrawer = React.memo(
))}
- {prefixListDetails.deleted && (
+ {!isPrefixListSpecial && prefixListDetails.deleted && (
)}
-
-
- {isIPv4Supported && (
- ({
- backgroundColor: theme.tokens.alias.Background.Neutral,
- padding: theme.spacingFunction(12),
- ...(isIPv4InUse
- ? {
- border: `1px solid ${theme.tokens.alias.Border.Positive}`,
- }
- : {}),
- })}
- >
- ({
- display: 'flex',
- justifyContent: 'space-between',
- marginBottom: theme.spacingFunction(4),
- ...(!isIPv4InUse
- ? {
- color:
- theme.tokens.alias.Content.Text.Primary
- .Disabled,
- }
- : {}),
- })}
- >
- IPv4
- ({
- background: isIPv4InUse
- ? theme.tokens.component.Badge.Positive.Subtle
- .Background
- : theme.tokens.component.Badge.Neutral.Subtle
- .Background,
- color: isIPv4InUse
- ? theme.tokens.component.Badge.Positive.Subtle.Text
- : theme.tokens.component.Badge.Neutral.Subtle.Text,
- font: theme.font.bold,
- fontSize: theme.tokens.font.FontSize.Xxxs,
- marginRight: theme.spacingFunction(6),
- flexShrink: 0,
- })}
- />
-
-
- ({
- ...(!isIPv4InUse
- ? {
- color:
- theme.tokens.alias.Content.Text.Primary
- .Disabled,
- }
- : {}),
- })}
- >
- {prefixListDetails.ipv4!.length > 0 ? (
- prefixListDetails.ipv4!.join(', ')
- ) : (
- no IP addresses
- )}
-
-
- )}
-
- {isIPv6Supported && (
- ({
- backgroundColor: theme.tokens.alias.Background.Neutral,
- padding: theme.spacingFunction(12),
- ...(isIPv6InUse
- ? {
- border: `1px solid ${theme.tokens.alias.Border.Positive}`,
- }
- : {}),
- })}
- >
- ({
- display: 'flex',
- justifyContent: 'space-between',
- marginBottom: theme.spacingFunction(4),
- ...(!isIPv6InUse
- ? {
- color:
- theme.tokens.alias.Content.Text.Primary
- .Disabled,
- }
- : {}),
- })}
- >
- IPv6
- ({
- background: isIPv6InUse
- ? theme.tokens.component.Badge.Positive.Subtle
- .Background
- : theme.tokens.component.Badge.Neutral.Subtle
- .Background,
- color: isIPv6InUse
- ? theme.tokens.component.Badge.Positive.Subtle.Text
- : theme.tokens.component.Badge.Neutral.Subtle.Text,
- font: theme.font.bold,
- fontSize: theme.tokens.font.FontSize.Xxxs,
- marginRight: theme.spacingFunction(6),
- flexShrink: 0,
- })}
- />
-
- ({
- ...(!isIPv6InUse
- ? {
- color:
- theme.tokens.alias.Content.Text.Primary
- .Disabled,
- }
- : {}),
- })}
- >
- {prefixListDetails.ipv6!.length > 0 ? (
- prefixListDetails.ipv6!.join(', ')
- ) : (
- no IP addresses
- )}
-
-
- )}
-
+ {!isPrefixListSpecial && (
+
+ {isIPv4Supported && (
+
+ )}
+ {isIPv6Supported && (
+
+ )}
+
+ )}
>
)}
- ({
- marginTop: theme.spacingFunction(16),
- display: 'flex',
- justifyContent: backButtonText ? 'flex-start' : 'flex-end',
- })}
- >
-
-
+ {drawerFooter}
);
diff --git a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListIPSection.tsx b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListIPSection.tsx
new file mode 100644
index 00000000000..de9163f88c5
--- /dev/null
+++ b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/FirewallPrefixListIPSection.tsx
@@ -0,0 +1,72 @@
+import { Chip, Paper } from '@linode/ui';
+import React from 'react';
+
+import { StyledLabel, StyledListItem } from './shared.styles';
+
+interface PrefixListIPSectionProps {
+ addresses: string[];
+ inUse: boolean;
+ type: 'IPv4' | 'IPv6';
+}
+
+/**
+ * Displays a Prefix List IP section (IPv4 or IPv6) with usage indicator.
+ */
+export const PrefixListIPSection = ({
+ type,
+ inUse,
+ addresses,
+}: PrefixListIPSectionProps) => {
+ return (
+ ({
+ backgroundColor: theme.tokens.alias.Background.Neutral,
+ padding: theme.spacingFunction(12),
+ ...(inUse && {
+ border: `1px solid ${theme.tokens.alias.Border.Positive}`,
+ }),
+ })}
+ >
+ ({
+ display: 'flex',
+ justifyContent: 'space-between',
+ marginBottom: theme.spacingFunction(4),
+ ...(!inUse && {
+ color: theme.tokens.alias.Content.Text.Primary.Disabled,
+ }),
+ })}
+ >
+ {type}
+ ({
+ background: inUse
+ ? theme.tokens.component.Badge.Positive.Subtle.Background
+ : theme.tokens.component.Badge.Neutral.Subtle.Background,
+ color: inUse
+ ? theme.tokens.component.Badge.Positive.Subtle.Text
+ : theme.tokens.component.Badge.Neutral.Subtle.Text,
+ font: theme.font.bold,
+ fontSize: theme.tokens.font.FontSize.Xxxs,
+ marginRight: theme.spacingFunction(6),
+ flexShrink: 0,
+ })}
+ />
+
+
+ ({
+ ...(!inUse && {
+ color: theme.tokens.alias.Content.Text.Primary.Disabled,
+ }),
+ })}
+ >
+ {addresses.length > 0 ? addresses.join(', ') : no IP addresses}
+
+
+ );
+};
diff --git a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/MultiplePrefixListSelect.tsx b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/MultiplePrefixListSelect.tsx
index cb13e874b4a..52609f4d052 100644
--- a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/MultiplePrefixListSelect.tsx
+++ b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/MultiplePrefixListSelect.tsx
@@ -19,7 +19,12 @@ import {
useIsFirewallRulesetsPrefixlistsEnabled,
} from 'src/features/Firewalls/shared';
-import { getPrefixListType, groupPriority } from './shared';
+import {
+ combinePrefixLists,
+ getPrefixListType,
+ groupPriority,
+ isSpecialPrefixList,
+} from './shared';
import type { FirewallPrefixList } from '@linode/api-v4';
import type { Theme } from '@mui/material/styles';
@@ -54,9 +59,17 @@ const useStyles = makeStyles()((theme: Theme) => ({
},
}));
-const isPrefixListSupported = (pl: FirewallPrefixList) =>
- (pl.ipv4 !== null && pl.ipv4 !== undefined) ||
- (pl.ipv6 !== null && pl.ipv6 !== undefined);
+const isPrefixListSupported = (pl: FirewallPrefixList) => {
+ // Whitelisting all the Special PrefixLists as supported ones.
+ if (isSpecialPrefixList(pl.name)) {
+ return true;
+ }
+
+ return (
+ (pl.ipv4 !== null && pl.ipv4 !== undefined) ||
+ (pl.ipv6 !== null && pl.ipv6 !== undefined)
+ );
+};
const getSupportDetails = (pl: FirewallPrefixList) => ({
isPLIPv4Unsupported: pl.ipv4 === null || pl.ipv4 === undefined,
@@ -67,8 +80,13 @@ const getSupportDetails = (pl: FirewallPrefixList) => ({
* Default selection state for a newly chosen Prefix List
*/
const getDefaultPLReferenceState = (
- support: ReturnType
+ support: null | ReturnType
): { inIPv4Rule: boolean; inIPv6Rule: boolean } => {
+ if (support === null) {
+ // Special Prefix List case
+ return { inIPv4Rule: true, inIPv6Rule: false };
+ }
+
const { isPLIPv4Unsupported, isPLIPv6Unsupported } = support;
if (!isPLIPv4Unsupported && !isPLIPv6Unsupported)
@@ -135,7 +153,7 @@ export const MultiplePrefixListSelect = React.memo(
isFirewallRulesetsPrefixlistsFeatureEnabled
);
- const prefixLists = data ?? [];
+ const prefixLists = React.useMemo(() => combinePrefixLists(data), [data]);
/**
* Filter prefix lists to include those that support IPv4, IPv6, or both,
@@ -146,16 +164,18 @@ export const MultiplePrefixListSelect = React.memo(
prefixLists
.filter(isPrefixListSupported)
.map((pl) => ({
- label: pl.name,
- value: pl.id,
- support: getSupportDetails(pl),
+ label: pl.name!,
+ value: pl.id ?? pl.name,
+ support: !isSpecialPrefixList(pl.name)
+ ? getSupportDetails(pl as FirewallPrefixList)
+ : null,
}))
// The API does not seem to sort prefix lists by "name" to prioritize certain types.
// This sort ensures that Autocomplete's groupBy displays groups correctly without duplicates
// and that the dropdown shows groups in the desired order.
.sort((a, b) => {
- const groupA = getPrefixListType(a.label);
- const groupB = getPrefixListType(b.label);
+ const groupA = getPrefixListType(a.label!);
+ const groupB = getPrefixListType(b.label!);
return groupPriority[groupA] - groupPriority[groupB];
}),
@@ -233,9 +253,9 @@ export const MultiplePrefixListSelect = React.memo(
// Disabling a checkbox ensures that at least one option (IPv4 or IPv6) remains checked
const ipv4Unsupported =
- selectedOption?.support.isPLIPv4Unsupported === true;
+ selectedOption?.support?.isPLIPv4Unsupported === true;
const ipv6Unsupported =
- selectedOption?.support.isPLIPv6Unsupported === true;
+ selectedOption?.support?.isPLIPv6Unsupported === true;
const ipv4Forced =
thisPL.inIPv4Rule === true && thisPL.inIPv6Rule === false;
@@ -301,6 +321,7 @@ export const MultiplePrefixListSelect = React.memo(
checked={thisPL.inIPv4Rule === true}
data-testid={`ipv4-checkbox-${idx}`}
disabled={disableIPv4 || disabled}
+ id={`ipv4-checkbox-${idx}`}
onChange={() => handleToggleIPv4(!thisPL.inIPv4Rule, idx)}
text="IPv4"
toolTipText={getCheckboxTooltipText(
@@ -314,6 +335,7 @@ export const MultiplePrefixListSelect = React.memo(
checked={thisPL.inIPv6Rule === true}
data-testid={`ipv6-checkbox-${idx}`}
disabled={disableIPv6 || disabled}
+ id={`ipv6-checkbox-${idx}`}
onChange={() => handleToggleIPv6(!thisPL.inIPv6Rule, idx)}
text="IPv6"
toolTipText={getCheckboxTooltipText(
diff --git a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/shared.ts b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/shared.ts
index 200ffa8c0f1..e3fb2754362 100644
--- a/packages/manager/src/features/Firewalls/FirewallDetail/Rules/shared.ts
+++ b/packages/manager/src/features/Firewalls/FirewallDetail/Rules/shared.ts
@@ -1,6 +1,6 @@
import { prop, sortBy } from 'ramda';
-import type { APIError } from '@linode/api-v4/lib/types';
+import type { APIError, FirewallPrefixList } from '@linode/api-v4/lib/types';
export type Category = 'inbound' | 'outbound';
export interface FirewallRuleError {
@@ -150,3 +150,53 @@ export const getPrefixListType = (name: string): PrefixListGroup => {
}
return 'Other'; // Safe fallback
};
+
+export type SpecialPrefixList = Partial;
+
+const SPECIAL_PREFIX_LISTS_DESCRIPTION =
+ 'System-defined PrefixLists, such as pl::vpcs: and pl::subnets:, for VPC interface firewalls are dynamic and update automatically. They manage access to and from the interface for addresses within the interface’s VPC or VPC subnet.';
+
+export const SPECIAL_PREFIX_LISTS: SpecialPrefixList[] = [
+ { name: 'pl::vpcs:', description: SPECIAL_PREFIX_LISTS_DESCRIPTION },
+ {
+ name: 'pl::subnets:',
+ description: SPECIAL_PREFIX_LISTS_DESCRIPTION,
+ },
+];
+
+export const SPECIAL_PREFIX_LIST_NAMES = SPECIAL_PREFIX_LISTS.map(
+ (pl) => pl.name
+);
+
+export const isSpecialPrefixList = (name: string | undefined) => {
+ if (!name) return false;
+ return SPECIAL_PREFIX_LIST_NAMES.includes(name);
+};
+
+/**
+ * Combine API prefix lists with hardcoded special prefix lists.
+ * API results override special PLs if names collide.
+ * Ensures no duplicate prefix lists when combining hardcoded and API values.
+ * @TODO: Remove hardcoded special PLs once API supports them.
+ */
+export const combinePrefixLists = (
+ apiPLs: (FirewallPrefixList | SpecialPrefixList)[] | undefined
+): (FirewallPrefixList | SpecialPrefixList)[] => {
+ const map = new Map();
+
+ // Add hardcoded special PLs first
+ SPECIAL_PREFIX_LISTS.forEach((pl) => {
+ if (pl.name) {
+ map.set(pl.name, pl);
+ }
+ });
+
+ // Add API results (override if name matches with hardcoded special PLs)
+ (apiPLs ?? []).forEach((pl) => {
+ if (pl.name) {
+ map.set(pl.name, pl);
+ }
+ });
+
+ return Array.from(map.values());
+};
diff --git a/packages/manager/src/mocks/serverHandlers.ts b/packages/manager/src/mocks/serverHandlers.ts
index 03479d934b8..53b7dd66f8d 100644
--- a/packages/manager/src/mocks/serverHandlers.ts
+++ b/packages/manager/src/mocks/serverHandlers.ts
@@ -150,6 +150,7 @@ import { maintenancePolicyFactory } from 'src/factories/maintenancePolicy';
import { userAccountPermissionsFactory } from 'src/factories/userAccountPermissions';
import { userEntityPermissionsFactory } from 'src/factories/userEntityPermissions';
import { userRolesFactory } from 'src/factories/userRoles';
+import { SPECIAL_PREFIX_LIST_NAMES } from 'src/features/Firewalls/FirewallDetail/Rules/shared';
import type {
AccountMaintenance,
@@ -1395,14 +1396,25 @@ export const handlers = [
const filter = JSON.parse(request.headers.get('x-filter') || '{}');
if (filter['name']) {
- const match =
- prefixlists.find((pl) => pl.name === filter.name) ??
- firewallPrefixListFactory.build({
- name: filter['name'],
- description: `${filter['name']} description`,
- }); // fallback if not found
-
- return HttpResponse.json(makeResourcePage([match]));
+ const existingPrefixList = prefixlists.find(
+ (pl) => pl.name === filter.name
+ );
+
+ // SPECIAL_PREFIX_LIST_NAMES may expand in the future if returned by the API
+ const isPrefixListSpecial = SPECIAL_PREFIX_LIST_NAMES.includes(
+ filter.name
+ );
+
+ const match = isPrefixListSpecial
+ ? [] // Special PLs: API currently returns empty; @TODO: update with actual response once API supports them
+ : [
+ existingPrefixList ??
+ firewallPrefixListFactory.build({
+ name: filter.name,
+ description: `${filter.name} description`,
+ }),
+ ];
+ return HttpResponse.json(makeResourcePage(match));
}
}
return HttpResponse.json(makeResourcePage(prefixlists));
@@ -1431,6 +1443,7 @@ export const handlers = [
ipv4: [
'pl:system:resolvers:test',
'pl:system:test',
+ 'pl::vpcs:', // special prefixlist
'192.168.1.200',
'192.168.1.201',
],
@@ -1471,6 +1484,7 @@ export const handlers = [
'pl::supports-both-but-empty-both',
'172.31.255.255',
'pl::marked-for-deletion',
+ 'pl::vpcs:', // special prefixlist
],
ipv6: [
'pl::supports-both',
@@ -1483,6 +1497,7 @@ export const handlers = [
// our logic will treat them as a single entity within the ipv4 or ipv6 array.
'pl::vpcs:supports-both-2',
'2001:db8:85a3::8a2e:372:7336/128',
+ 'pl::subnets:', // special prefixlist
],
},
ports: '22, 53, 80, 100, 443, 3306',
From 5faffaa2797eeb4178b21697f1e3ff2a8e49ea99 Mon Sep 17 00:00:00 2001
From: Alban Bailly <130582365+abailly-akamai@users.noreply.github.com>
Date: Mon, 8 Dec 2025 10:58:51 +0100
Subject: [PATCH 85/91] fix: [UIE-9733] - Optimize rendering of entities in
`AssignedRolesTable` (#13173)
* Optimize rendering of entities in AssignRolesTable
* Added changeset: Optimize rendering of entities in AssignedRolesTable
---
.../pr-13173-fixed-1764944067009.md | 5 ++
.../IAM/Users/UserRoles/AssignedEntities.tsx | 75 +++++++++++--------
2 files changed, 48 insertions(+), 32 deletions(-)
create mode 100644 packages/manager/.changeset/pr-13173-fixed-1764944067009.md
diff --git a/packages/manager/.changeset/pr-13173-fixed-1764944067009.md b/packages/manager/.changeset/pr-13173-fixed-1764944067009.md
new file mode 100644
index 00000000000..771b1923966
--- /dev/null
+++ b/packages/manager/.changeset/pr-13173-fixed-1764944067009.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Fixed
+---
+
+Optimize rendering of entities in AssignedRolesTable ([#13173](https://github.com/linode/manager/pull/13173))
diff --git a/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx b/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx
index f1c53a8b555..01f08dfcf51 100644
--- a/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx
+++ b/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx
@@ -34,7 +34,13 @@ export const AssignedEntities = ({
return sortByString(a.name, b.name, 'asc');
});
- const items = sortedEntities?.map((entity: CombinedEntity) => (
+ // We don't need to send all items to the TruncatedList component for performance reasons,
+ // since past a certain count they will be hidden within the row.
+ const MAX_ITEMS_TO_RENDER = 15;
+ const entitiesToRender = sortedEntities.slice(0, MAX_ITEMS_TO_RENDER);
+ const totalCount = sortedEntities.length;
+
+ const items = entitiesToRender?.map((entity: CombinedEntity) => (
(
-
-
-
-
-
- )}
+ customOverflowButton={(numHiddenByTruncate) => {
+ const numHiddenItems =
+ totalCount - MAX_ITEMS_TO_RENDER + numHiddenByTruncate;
+
+ return (
+
+
+
+
+
+ );
+ }}
justifyOverflowButtonRight
listContainerSx={{
width: '100%',
From 4905ac3e5c7805c960ceaf8cad3c710c1a5149a2 Mon Sep 17 00:00:00 2001
From: Alban Bailly <130582365+abailly-akamai@users.noreply.github.com>
Date: Mon, 8 Dec 2025 15:11:36 +0100
Subject: [PATCH 86/91] feat: [UIE-9637] - IAM "New" and "Limited Availability"
badges (#13175)
* flag + badges
* changeset
* feedback
* feedback
* deps
---
.../pr-13175-added-1765199020354.md | 5 +++
.../src/components/PrimaryNav/PrimaryLink.tsx | 5 ++-
.../src/components/PrimaryNav/PrimaryNav.tsx | 4 ++
.../manager/src/dev-tools/FeatureFlagTool.tsx | 6 ++-
packages/manager/src/featureFlags.ts | 1 +
.../manager/src/features/IAM/IAMLanding.tsx | 44 ++++++++++++++++++-
.../features/IAM/Users/UserDetailsLanding.tsx | 21 +++++++--
.../TopMenu/UserMenu/UserMenuPopover.tsx | 26 +++++++++--
8 files changed, 102 insertions(+), 10 deletions(-)
create mode 100644 packages/manager/.changeset/pr-13175-added-1765199020354.md
diff --git a/packages/manager/.changeset/pr-13175-added-1765199020354.md b/packages/manager/.changeset/pr-13175-added-1765199020354.md
new file mode 100644
index 00000000000..0dfe282277d
--- /dev/null
+++ b/packages/manager/.changeset/pr-13175-added-1765199020354.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Added
+---
+
+IAM "New" and "Limited Availability" badges ([#13175](https://github.com/linode/manager/pull/13175))
diff --git a/packages/manager/src/components/PrimaryNav/PrimaryLink.tsx b/packages/manager/src/components/PrimaryNav/PrimaryLink.tsx
index 3d7afbb9783..60175c32da1 100644
--- a/packages/manager/src/components/PrimaryNav/PrimaryLink.tsx
+++ b/packages/manager/src/components/PrimaryNav/PrimaryLink.tsx
@@ -1,4 +1,4 @@
-import { BetaChip } from '@linode/ui';
+import { BetaChip, NewFeatureChip } from '@linode/ui';
import * as React from 'react';
import { StyledActiveLink, StyledPrimaryLinkBox } from './PrimaryNav.styles';
@@ -17,6 +17,7 @@ export interface BaseNavLink {
export interface PrimaryLink extends BaseNavLink {
betaChipClassName?: string;
isBeta?: boolean;
+ isNew?: boolean;
onClick?: (e: React.MouseEvent) => void;
}
@@ -35,6 +36,7 @@ const PrimaryLink = React.memo((props: PrimaryLinkProps) => {
to,
isActiveLink,
isBeta,
+ isNew,
isCollapsed,
onClick,
} = props;
@@ -63,6 +65,7 @@ const PrimaryLink = React.memo((props: PrimaryLinkProps) => {
{isBeta ? (
) : null}
+ {isNew ? : null}
);
diff --git a/packages/manager/src/components/PrimaryNav/PrimaryNav.tsx b/packages/manager/src/components/PrimaryNav/PrimaryNav.tsx
index b8eeba617d8..d42cfe40962 100644
--- a/packages/manager/src/components/PrimaryNav/PrimaryNav.tsx
+++ b/packages/manager/src/components/PrimaryNav/PrimaryNav.tsx
@@ -117,6 +117,8 @@ export const PrimaryNav = (props: PrimaryNavProps) => {
const { isDatabasesEnabled, isDatabasesV2Beta } = useIsDatabasesEnabled();
const { isIAMBeta, isIAMEnabled } = useIsIAMEnabled();
+ const showLimitedAvailabilityBadges = flags.iamLimitedAvailabilityBadges;
+
const { isNetworkLoadBalancerEnabled } = useIsNetworkLoadBalancerEnabled();
const {
@@ -274,6 +276,7 @@ export const PrimaryNav = (props: PrimaryNavProps) => {
hide: !isIAMEnabled || iamRbacPrimaryNavChanges,
to: '/iam',
isBeta: isIAMBeta,
+ isNew: !isIAMBeta && showLimitedAvailabilityBadges,
},
{
display: 'Account',
@@ -307,6 +310,7 @@ export const PrimaryNav = (props: PrimaryNavProps) => {
hide: !isIAMEnabled,
to: '/iam',
isBeta: isIAMBeta,
+ isNew: !isIAMBeta && showLimitedAvailabilityBadges,
},
{
display: 'Quotas',
diff --git a/packages/manager/src/dev-tools/FeatureFlagTool.tsx b/packages/manager/src/dev-tools/FeatureFlagTool.tsx
index ec87b33c2d8..e017a81f19c 100644
--- a/packages/manager/src/dev-tools/FeatureFlagTool.tsx
+++ b/packages/manager/src/dev-tools/FeatureFlagTool.tsx
@@ -61,7 +61,11 @@ const options: { flag: keyof Flags; label: string }[] = [
label: 'Database Restrict Premium Plan Resize',
},
{ flag: 'apicliButtonCopy', label: 'APICLI Button Copy' },
- { flag: 'iam', label: 'Identity and Access Beta' },
+ { flag: 'iam', label: 'IAM enabled & Beta' },
+ {
+ flag: 'iamLimitedAvailabilityBadges',
+ label: 'IAM Limited Availability Badges',
+ },
{ flag: 'iamDelegation', label: 'IAM Delegation (Parent/Child)' },
{ flag: 'iamRbacPrimaryNavChanges', label: 'IAM Primary Nav Changes' },
{
diff --git a/packages/manager/src/featureFlags.ts b/packages/manager/src/featureFlags.ts
index 0ab07445dee..3576eb95e94 100644
--- a/packages/manager/src/featureFlags.ts
+++ b/packages/manager/src/featureFlags.ts
@@ -213,6 +213,7 @@ export interface Flags {
gpuv2: GpuV2;
iam: BetaFeatureFlag;
iamDelegation: BaseFeatureFlag;
+ iamLimitedAvailabilityBadges: boolean;
iamRbacPrimaryNavChanges: boolean;
ipv6Sharing: boolean;
kubernetesBlackwellPlans: boolean;
diff --git a/packages/manager/src/features/IAM/IAMLanding.tsx b/packages/manager/src/features/IAM/IAMLanding.tsx
index 822ee434d84..588ef58e7f9 100644
--- a/packages/manager/src/features/IAM/IAMLanding.tsx
+++ b/packages/manager/src/features/IAM/IAMLanding.tsx
@@ -1,3 +1,4 @@
+import { Chip, NewFeatureChip, styled } from '@linode/ui';
import { Outlet, useLocation, useNavigate } from '@tanstack/react-router';
import * as React from 'react';
@@ -6,13 +7,21 @@ import { SuspenseLoader } from 'src/components/SuspenseLoader';
import { TabPanels } from 'src/components/Tabs/TabPanels';
import { Tabs } from 'src/components/Tabs/Tabs';
import { TanStackTabLinkList } from 'src/components/Tabs/TanStackTabLinkList';
+import { useFlags } from 'src/hooks/useFlags';
import { useTabs } from 'src/hooks/useTabs';
import { useDelegationRole } from './hooks/useDelegationRole';
-import { useIsIAMDelegationEnabled } from './hooks/useIsIAMEnabled';
+import {
+ useIsIAMDelegationEnabled,
+ useIsIAMEnabled,
+} from './hooks/useIsIAMEnabled';
import { IAM_DOCS_LINK, ROLES_LEARN_MORE_LINK } from './Shared/constants';
export const IdentityAccessLanding = React.memo(() => {
+ const flags = useFlags();
+ const { isIAMBeta, isIAMEnabled } = useIsIAMEnabled();
+ const showLimitedAvailabilityBadges =
+ flags.iamLimitedAvailabilityBadges && isIAMEnabled && !isIAMBeta;
const location = useLocation();
const navigate = useNavigate();
const { isParentAccount } = useDelegationRole();
@@ -49,7 +58,21 @@ export const IdentityAccessLanding = React.memo(() => {
return (
<>
-
+
+
+
+ >
+ ) : null,
+ },
+ removeCrumbX: 1,
+ }}
+ spacingBottom={4}
+ />
}>
@@ -61,3 +84,20 @@ export const IdentityAccessLanding = React.memo(() => {
>
);
});
+
+const StyledLimitedAvailabilityChip = styled(Chip, {
+ label: 'StyledLimitedAvailabilityChip',
+ shouldForwardProp: (prop) => prop !== 'color',
+})(({ theme }) => ({
+ '& .MuiChip-label': {
+ padding: 0,
+ },
+ background: theme.tokens.component.Badge.Informative.Subtle.Background,
+ color: theme.tokens.component.Badge.Informative.Subtle.Text,
+ font: theme.font.bold,
+ fontSize: '12px',
+ lineHeight: '12px',
+ height: 16,
+ letterSpacing: '.22px',
+ padding: theme.spacingFunction(4),
+}));
diff --git a/packages/manager/src/features/IAM/Users/UserDetailsLanding.tsx b/packages/manager/src/features/IAM/Users/UserDetailsLanding.tsx
index 3fcd1a070bb..0d4d6ece9c0 100644
--- a/packages/manager/src/features/IAM/Users/UserDetailsLanding.tsx
+++ b/packages/manager/src/features/IAM/Users/UserDetailsLanding.tsx
@@ -1,4 +1,4 @@
-import { Chip, styled } from '@linode/ui';
+import { Chip, NewFeatureChip, styled } from '@linode/ui';
import { Outlet, useLoaderData, useParams } from '@tanstack/react-router';
import React from 'react';
@@ -6,7 +6,11 @@ import { LandingHeader } from 'src/components/LandingHeader';
import { TabPanels } from 'src/components/Tabs/TabPanels';
import { Tabs } from 'src/components/Tabs/Tabs';
import { TanStackTabLinkList } from 'src/components/Tabs/TanStackTabLinkList';
-import { useIsIAMDelegationEnabled } from 'src/features/IAM/hooks/useIsIAMEnabled';
+import {
+ useIsIAMDelegationEnabled,
+ useIsIAMEnabled,
+} from 'src/features/IAM/hooks/useIsIAMEnabled';
+import { useFlags } from 'src/hooks/useFlags';
import { useTabs } from 'src/hooks/useTabs';
import { useDelegationRole } from '../hooks/useDelegationRole';
@@ -18,6 +22,10 @@ import {
} from '../Shared/constants';
export const UserDetailsLanding = () => {
+ const flags = useFlags();
+ const { isIAMBeta, isIAMEnabled } = useIsIAMEnabled();
+ const showLimitedAvailabilityBadges =
+ flags.iamLimitedAvailabilityBadges && isIAMEnabled && !isIAMBeta;
const { username } = useParams({ from: '/iam/users/$username' });
const { isIAMDelegationEnabled } = useIsIAMDelegationEnabled();
const { isParentAccount } = useDelegationRole();
@@ -55,7 +63,14 @@ export const UserDetailsLanding = () => {
breadcrumbProps={{
crumbOverrides: [
{
- label: IAM_LABEL,
+ label: (
+ <>
+ {IAM_LABEL}
+ {showLimitedAvailabilityBadges ? (
+
+ ) : null}
+ >
+ ),
position: 1,
},
],
diff --git a/packages/manager/src/features/TopMenu/UserMenu/UserMenuPopover.tsx b/packages/manager/src/features/TopMenu/UserMenu/UserMenuPopover.tsx
index 5a6544153d7..0ee7f5b8ef1 100644
--- a/packages/manager/src/features/TopMenu/UserMenu/UserMenuPopover.tsx
+++ b/packages/manager/src/features/TopMenu/UserMenu/UserMenuPopover.tsx
@@ -1,5 +1,12 @@
import { useAccount, useProfile } from '@linode/queries';
-import { BetaChip, Box, Divider, Stack, Typography } from '@linode/ui';
+import {
+ BetaChip,
+ Box,
+ Divider,
+ NewFeatureChip,
+ Stack,
+ Typography,
+} from '@linode/ui';
import { styled } from '@mui/material';
import Grid from '@mui/material/Grid';
import Popover from '@mui/material/Popover';
@@ -32,13 +39,18 @@ interface MenuLink {
display: string;
hide?: boolean;
isBeta?: boolean;
+ isNew?: boolean;
to: string;
}
export const UserMenuPopover = (props: UserMenuPopoverProps) => {
const { anchorEl, isDrawerOpen, onClose, onDrawerOpen } = props;
const sessionContext = React.useContext(switchAccountSessionContext);
- const { iamRbacPrimaryNavChanges, limitsEvolution } = useFlags();
+ const {
+ iamRbacPrimaryNavChanges,
+ limitsEvolution,
+ iamLimitedAvailabilityBadges,
+ } = useFlags();
const theme = useTheme();
const { data: account } = useAccount();
@@ -121,6 +133,7 @@ export const UserMenuPopover = (props: UserMenuPopoverProps) => {
? '/users'
: '/account/users',
isBeta: iamRbacPrimaryNavChanges && isIAMEnabled && isIAMBeta,
+ isNew: isIAMEnabled && !isIAMBeta && iamLimitedAvailabilityBadges,
},
{
display: 'Quotas',
@@ -150,7 +163,13 @@ export const UserMenuPopover = (props: UserMenuPopoverProps) => {
: '/account/settings',
},
],
- [isIAMEnabled, iamRbacPrimaryNavChanges, limitsEvolution]
+ [
+ isIAMEnabled,
+ iamRbacPrimaryNavChanges,
+ limitsEvolution,
+ iamLimitedAvailabilityBadges,
+ isIAMBeta,
+ ]
);
const renderLink = (link: MenuLink) => {
@@ -281,6 +300,7 @@ export const UserMenuPopover = (props: UserMenuPopoverProps) => {
>
{menuLink.display}
{menuLink?.isBeta ? : null}
+ {menuLink?.isNew ? : null}
)
)}
From 9921e9e46f7987fd52cd78ed448d5321a9602e6d Mon Sep 17 00:00:00 2001
From: Alban Bailly <130582365+abailly-akamai@users.noreply.github.com>
Date: Mon, 8 Dec 2025 15:19:41 +0100
Subject: [PATCH 87/91] fix: [UIE-9245] - EntitiesSelect performance on large
accounts (#13168)
* save progress
* Cleanup
* handle search
* handle search
* handle search
* Added changeset: EntitiesSelect performance on large accounts
* fix select all
* deselect all
---
.../pr-13168-fixed-1765192706974.md | 5 ++
.../AssignedPermissionsPanel.tsx | 4 +-
...ities.test.tsx => EntitiesSelect.test.tsx} | 18 ++---
.../{Entities.tsx => EntitiesSelect.tsx} | 68 +++++++++++++++++--
4 files changed, 77 insertions(+), 18 deletions(-)
create mode 100644 packages/manager/.changeset/pr-13168-fixed-1765192706974.md
rename packages/manager/src/features/IAM/Shared/Entities/{Entities.test.tsx => EntitiesSelect.test.tsx} (96%)
rename packages/manager/src/features/IAM/Shared/Entities/{Entities.tsx => EntitiesSelect.tsx} (63%)
diff --git a/packages/manager/.changeset/pr-13168-fixed-1765192706974.md b/packages/manager/.changeset/pr-13168-fixed-1765192706974.md
new file mode 100644
index 00000000000..ddd0821e97b
--- /dev/null
+++ b/packages/manager/.changeset/pr-13168-fixed-1765192706974.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Fixed
+---
+
+EntitiesSelect performance on large accounts ([#13168](https://github.com/linode/manager/pull/13168))
diff --git a/packages/manager/src/features/IAM/Shared/AssignedPermissionsPanel/AssignedPermissionsPanel.tsx b/packages/manager/src/features/IAM/Shared/AssignedPermissionsPanel/AssignedPermissionsPanel.tsx
index 2f6b38c0dff..c9b33e75b56 100644
--- a/packages/manager/src/features/IAM/Shared/AssignedPermissionsPanel/AssignedPermissionsPanel.tsx
+++ b/packages/manager/src/features/IAM/Shared/AssignedPermissionsPanel/AssignedPermissionsPanel.tsx
@@ -3,7 +3,7 @@ import * as React from 'react';
import { Link } from 'src/components/Link';
import { ROLES_LEARN_MORE_LINK } from '../constants';
-import { Entities } from '../Entities/Entities';
+import { EntitiesSelect } from '../Entities/EntitiesSelect';
import { Permissions } from '../Permissions/Permissions';
import { type ExtendedRole, getFacadeRoleDescription } from '../utilities';
import {
@@ -62,7 +62,7 @@ export const AssignedPermissionsPanel = ({
)}
{mode !== 'change-role-for-entity' && (
- {
it('renders correct data when it is an account access and type is an account', () => {
renderWithTheme(
- {
it('renders correct data when it is an account access and type is not an account', () => {
renderWithTheme(
- {
});
renderWithTheme(
- {
});
renderWithTheme(
- {
});
renderWithTheme(
- {
});
renderWithTheme(
- {
it('renders Autocomplete as readonly when mode is "change-role"', () => {
renderWithTheme(
- {
const errorMessage = 'Entities are required.';
renderWithTheme(
- {
- const { data: entities } = useAllAccountEntities({});
+ const { data: entities, isLoading } = useAllAccountEntities({});
const theme = useTheme();
+ const [displayCount, setDisplayCount] = React.useState(INITIAL_DISPLAY_COUNT);
+ const [inputValue, setInputValue] = React.useState('');
+
const memoizedEntities = React.useMemo(() => {
if (access !== 'entity_access' || !entities) {
return [];
@@ -46,6 +52,30 @@ export const Entities = ({
return typeEntities ? mapEntitiesToOptions(typeEntities) : [];
}, [entities, access, type]);
+ const filteredEntities = React.useMemo(() => {
+ if (!inputValue) {
+ return memoizedEntities;
+ }
+
+ return memoizedEntities.filter((option) =>
+ option.label.toLowerCase().includes(inputValue.toLowerCase())
+ );
+ }, [memoizedEntities, inputValue]);
+
+ const visibleOptions = React.useMemo(() => {
+ const slice = filteredEntities.slice(0, displayCount);
+
+ const selectedNotVisible = value.filter(
+ (selected) => !slice.some((opt) => opt.value === selected.value)
+ );
+
+ return [...slice, ...selectedNotVisible];
+ }, [filteredEntities, displayCount, value]);
+
+ React.useEffect(() => {
+ setDisplayCount(INITIAL_DISPLAY_COUNT);
+ }, [filteredEntities]);
+
if (access === 'account_access') {
return (
<>
@@ -75,16 +105,28 @@ export const Entities = ({
getOptionLabel={(option) => option.label}
isOptionEqualToValue={(option, value) => option.value === value.value}
label="Entities"
+ loading={isLoading}
multiple
noMarginTop
- onChange={(_, newValue) => {
- onChange(newValue || []);
+ onChange={(_, newValue, reason) => {
+ if (
+ reason === 'selectOption' &&
+ newValue.length === displayCount &&
+ filteredEntities.length > displayCount
+ ) {
+ onChange(filteredEntities);
+ } else {
+ onChange(newValue || []);
+ }
}}
- options={memoizedEntities}
+ onInputChange={(_, value) => {
+ setInputValue(value);
+ }}
+ options={visibleOptions}
placeholder={getPlaceholder(
type,
value.length,
- memoizedEntities.length
+ filteredEntities.length
)}
readOnly={mode === 'change-role'}
renderInput={(params) => (
@@ -97,10 +139,22 @@ export const Entities = ({
placeholder={getPlaceholder(
type,
value.length,
- memoizedEntities.length
+ filteredEntities.length
)}
/>
)}
+ slotProps={{
+ listbox: {
+ onScroll: (e) => {
+ const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;
+ if (scrollHeight - scrollTop <= clientHeight * 1.5) {
+ setDisplayCount((prev) =>
+ Math.min(prev + 200, filteredEntities.length)
+ );
+ }
+ },
+ },
+ }}
sx={{
marginTop: 0,
'& .MuiChip-root': {
From 17cafe764e5f4d7b90ee8bca0481347ececc33c2 Mon Sep 17 00:00:00 2001
From: Alban Bailly <130582365+abailly-akamai@users.noreply.github.com>
Date: Mon, 8 Dec 2025 16:58:25 +0100
Subject: [PATCH 88/91] small fix to hidden count (#13178)
---
.../src/features/IAM/Users/UserRoles/AssignedEntities.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx b/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx
index 01f08dfcf51..ee40b3929c0 100644
--- a/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx
+++ b/packages/manager/src/features/IAM/Users/UserRoles/AssignedEntities.tsx
@@ -83,7 +83,9 @@ export const AssignedEntities = ({
addEllipsis
customOverflowButton={(numHiddenByTruncate) => {
const numHiddenItems =
- totalCount - MAX_ITEMS_TO_RENDER + numHiddenByTruncate;
+ totalCount <= MAX_ITEMS_TO_RENDER
+ ? numHiddenByTruncate
+ : totalCount - MAX_ITEMS_TO_RENDER + numHiddenByTruncate;
return (
Date: Mon, 8 Dec 2025 13:11:20 -0500
Subject: [PATCH 89/91] =?UTF-8?q?Revert=20"upcoming:=20[M3-10708]=20-=20Di?=
=?UTF-8?q?splay=20maintenance=20type=20and=20config=20in=20linode=5F?=
=?UTF-8?q?=E2=80=A6"=20(#13179)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 814c11ec349b119472dffccb0e947a1af98595bc.
---
.../pr-13084-changed-1762970902694.md | 5 -
packages/api-v4/src/account/events.ts | 6 +-
...r-13084-upcoming-features-1762970850861.md | 5 -
.../components/ExtraPresetEvents.tsx | 59 --------
.../components/ExtraPresetMaintenance.tsx | 37 +----
.../src/dev-tools/components/JsonTextArea.tsx | 19 +--
.../Maintenance/MaintenanceTableRow.tsx | 8 +-
.../features/Account/Maintenance/utilities.ts | 2 +-
.../src/features/Events/factories/linode.tsx | 141 +++---------------
9 files changed, 32 insertions(+), 250 deletions(-)
delete mode 100644 packages/api-v4/.changeset/pr-13084-changed-1762970902694.md
delete mode 100644 packages/manager/.changeset/pr-13084-upcoming-features-1762970850861.md
diff --git a/packages/api-v4/.changeset/pr-13084-changed-1762970902694.md b/packages/api-v4/.changeset/pr-13084-changed-1762970902694.md
deleted file mode 100644
index b3e1bd0b7c7..00000000000
--- a/packages/api-v4/.changeset/pr-13084-changed-1762970902694.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Changed
----
-
-Use v4beta endpoints for /events and /events/ ([#13084](https://github.com/linode/manager/pull/13084))
diff --git a/packages/api-v4/src/account/events.ts b/packages/api-v4/src/account/events.ts
index 9f2359d42c3..4f8c8d21e4b 100644
--- a/packages/api-v4/src/account/events.ts
+++ b/packages/api-v4/src/account/events.ts
@@ -1,4 +1,4 @@
-import { API_ROOT, BETA_API_ROOT } from '../constants';
+import { API_ROOT } from '../constants';
import Request, { setMethod, setParams, setURL, setXFilter } from '../request';
import type { Filter, Params, ResourcePage } from '../types';
@@ -12,7 +12,7 @@ import type { Event, Notification } from './types';
*/
export const getEvents = (params: Params = {}, filter: Filter = {}) =>
Request>(
- setURL(`${BETA_API_ROOT}/account/events`),
+ setURL(`${API_ROOT}/account/events`),
setMethod('GET'),
setXFilter(filter),
setParams(params),
@@ -26,7 +26,7 @@ export const getEvents = (params: Params = {}, filter: Filter = {}) =>
*/
export const getEvent = (eventId: number) =>
Request(
- setURL(`${BETA_API_ROOT}/account/events/${encodeURIComponent(eventId)}`),
+ setURL(`${API_ROOT}/account/events/${encodeURIComponent(eventId)}`),
setMethod('GET'),
);
diff --git a/packages/manager/.changeset/pr-13084-upcoming-features-1762970850861.md b/packages/manager/.changeset/pr-13084-upcoming-features-1762970850861.md
deleted file mode 100644
index 894835a1327..00000000000
--- a/packages/manager/.changeset/pr-13084-upcoming-features-1762970850861.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Display maintenance type (emergency/scheduled) and config information in linode_migrate event messages ([#13084](https://github.com/linode/manager/pull/13084))
diff --git a/packages/manager/src/dev-tools/components/ExtraPresetEvents.tsx b/packages/manager/src/dev-tools/components/ExtraPresetEvents.tsx
index 8982d6ea2db..6ac26ce24fb 100644
--- a/packages/manager/src/dev-tools/components/ExtraPresetEvents.tsx
+++ b/packages/manager/src/dev-tools/components/ExtraPresetEvents.tsx
@@ -287,65 +287,6 @@ const eventTemplates = {
status: 'finished',
}),
- 'Linode Migration In Progress': () =>
- eventFactory.build({
- action: 'linode_migrate',
- entity: {
- id: 1,
- label: 'linode-1',
- type: 'linode',
- url: '/v4/linode/instances/1',
- },
- message: 'Linode migration in progress.',
- percent_complete: 45,
- status: 'started',
- }),
-
- 'Linode Migration - Emergency': () =>
- eventFactory.build({
- action: 'linode_migrate',
- description: 'emergency',
- entity: {
- id: 1,
- label: 'linode-1',
- type: 'linode',
- url: '/v4/linode/instances/1',
- },
- message: 'Emergency linode migration in progress.',
- percent_complete: 30,
- status: 'started',
- }),
-
- 'Linode Migration - Scheduled Started': () =>
- eventFactory.build({
- action: 'linode_migrate',
- description: 'scheduled',
- entity: {
- id: 1,
- label: 'linode-1',
- type: 'linode',
- url: '/v4/linode/instances/1',
- },
- message: 'Scheduled linode migration in progress.',
- percent_complete: 10,
- status: 'started',
- }),
-
- 'Linode Migration - Scheduled': () =>
- eventFactory.build({
- action: 'linode_migrate',
- description: 'scheduled',
- entity: {
- id: 1,
- label: 'linode-1',
- type: 'linode',
- url: '/v4/linode/instances/1',
- },
- message: 'Scheduled linode migration in progress.',
- percent_complete: 0,
- status: 'scheduled',
- }),
-
'Completed Event': () =>
eventFactory.build({
action: 'account_update',
diff --git a/packages/manager/src/dev-tools/components/ExtraPresetMaintenance.tsx b/packages/manager/src/dev-tools/components/ExtraPresetMaintenance.tsx
index d1a4eae094b..c257d22db49 100644
--- a/packages/manager/src/dev-tools/components/ExtraPresetMaintenance.tsx
+++ b/packages/manager/src/dev-tools/components/ExtraPresetMaintenance.tsx
@@ -210,42 +210,7 @@ const maintenanceTemplates = {
Canceled: () => accountMaintenanceFactory.build({ status: 'canceled' }),
Completed: () => accountMaintenanceFactory.build({ status: 'completed' }),
'In Progress': () =>
- accountMaintenanceFactory.build({
- status: 'in_progress',
- entity: {
- type: 'linode',
- id: 1,
- label: 'linode-1',
- url: '/v4/linode/instances/1',
- },
- type: 'migrate',
- }),
- 'In Progress - Emergency Migration': () =>
- accountMaintenanceFactory.build({
- status: 'in_progress',
- entity: {
- type: 'linode',
- id: 1,
- label: 'linode-1',
- url: '/v4/linode/instances/1',
- },
- type: 'migrate',
- description: 'emergency',
- reason: 'Emergency maintenance migration',
- }),
- 'In Progress - Scheduled Migration': () =>
- accountMaintenanceFactory.build({
- status: 'in_progress',
- entity: {
- type: 'linode',
- id: 1,
- label: 'linode-1',
- url: '/v4/linode/instances/1',
- },
- type: 'migrate',
- description: 'scheduled',
- reason: 'Scheduled maintenance migration',
- }),
+ accountMaintenanceFactory.build({ status: 'in_progress' }),
Pending: () => accountMaintenanceFactory.build({ status: 'pending' }),
Scheduled: () => accountMaintenanceFactory.build({ status: 'scheduled' }),
Started: () => accountMaintenanceFactory.build({ status: 'started' }),
diff --git a/packages/manager/src/dev-tools/components/JsonTextArea.tsx b/packages/manager/src/dev-tools/components/JsonTextArea.tsx
index 1bc713bb65e..6eb65224f9f 100644
--- a/packages/manager/src/dev-tools/components/JsonTextArea.tsx
+++ b/packages/manager/src/dev-tools/components/JsonTextArea.tsx
@@ -24,23 +24,6 @@ export const JsonTextArea = ({
const debouncedUpdate = React.useMemo(
() =>
debounce((text: string) => {
- // Handle empty/whitespace text as null
- if (!text.trim()) {
- const event = {
- currentTarget: {
- name,
- value: null,
- },
- target: {
- name,
- value: null,
- },
- } as unknown as React.ChangeEvent;
-
- onChange(event);
- return;
- }
-
try {
const parsedJson = JSON.parse(text);
const event = {
@@ -52,7 +35,7 @@ export const JsonTextArea = ({
name,
value: parsedJson,
},
- } as unknown as React.ChangeEvent;
+ } as React.ChangeEvent;
onChange(event);
} catch (err) {
diff --git a/packages/manager/src/features/Account/Maintenance/MaintenanceTableRow.tsx b/packages/manager/src/features/Account/Maintenance/MaintenanceTableRow.tsx
index 3fc62a6fb2c..9645722c188 100644
--- a/packages/manager/src/features/Account/Maintenance/MaintenanceTableRow.tsx
+++ b/packages/manager/src/features/Account/Maintenance/MaintenanceTableRow.tsx
@@ -47,8 +47,6 @@ const statusIconMap: Record = {
scheduled: 'active',
};
-const MAX_REASON_DISPLAY_LENGTH = 93;
-
interface MaintenanceTableRowProps {
maintenance: AccountMaintenance;
tableType: MaintenanceTableType;
@@ -76,11 +74,9 @@ export const MaintenanceTableRow = (props: MaintenanceTableRowProps) => {
const eventProgress = recentEvent && formatProgressEvent(recentEvent);
- const truncatedReason = reason
- ? truncate(reason, MAX_REASON_DISPLAY_LENGTH)
- : '';
+ const truncatedReason = truncate(reason, 93);
- const isTruncated = reason ? reason !== truncatedReason : false;
+ const isTruncated = reason !== truncatedReason;
const dateField = getMaintenanceDateField(tableType);
const dateValue = props.maintenance[dateField];
diff --git a/packages/manager/src/features/Account/Maintenance/utilities.ts b/packages/manager/src/features/Account/Maintenance/utilities.ts
index f202f33691d..bb1c7cbe883 100644
--- a/packages/manager/src/features/Account/Maintenance/utilities.ts
+++ b/packages/manager/src/features/Account/Maintenance/utilities.ts
@@ -40,7 +40,7 @@ export const maintenanceDateColumnMap: Record<
> = {
completed: ['complete_time', 'End Date'],
'in progress': ['start_time', 'Start Date'],
- upcoming: ['when', 'Start Date'],
+ upcoming: ['start_time', 'Start Date'],
pending: ['when', 'Date'],
};
diff --git a/packages/manager/src/features/Events/factories/linode.tsx b/packages/manager/src/features/Events/factories/linode.tsx
index f65948586e0..2d80ed84d26 100644
--- a/packages/manager/src/features/Events/factories/linode.tsx
+++ b/packages/manager/src/features/Events/factories/linode.tsx
@@ -5,23 +5,6 @@ import { Link } from 'src/components/Link';
import { EventLink } from '../EventLink';
import type { PartialEventMap } from '../types';
-import type { AccountMaintenance } from '@linode/api-v4';
-
-/**
- * Normalizes the event description to a valid maintenance type.
- * Only accepts 'emergency' or 'scheduled' from AccountMaintenance.description,
- * defaults to 'maintenance' for any other value or null/undefined.
- */
-type MaintenanceDescription = 'maintenance' | AccountMaintenance['description'];
-
-const getMaintenanceDescription = (
- description: null | string | undefined
-): MaintenanceDescription => {
- if (description === 'emergency' || description === 'scheduled') {
- return description;
- }
- return 'maintenance';
-};
export const linode: PartialEventMap<'linode'> = {
linode_addip: {
@@ -258,106 +241,30 @@ export const linode: PartialEventMap<'linode'> = {
),
},
linode_migrate: {
- failed: (e) => {
- const maintenanceType = getMaintenanceDescription(e.description);
- return (
- <>
- Migration failed for Linode{' '}
- for{' '}
- {maintenanceType === 'maintenance' ? (
- maintenance
- ) : (
- <>
- {maintenanceType} maintenance
- >
- )}
- {e.secondary_entity ? (
- <>
- {' '}
- with config
- >
- ) : (
- ''
- )}
- .
- >
- );
- },
- finished: (e) => {
- const maintenanceType = getMaintenanceDescription(e.description);
- return (
- <>
- Linode has been{' '}
- migrated for{' '}
- {maintenanceType === 'maintenance' ? (
- maintenance
- ) : (
- <>
- {maintenanceType} maintenance
- >
- )}
- {e.secondary_entity ? (
- <>
- {' '}
- with config
- >
- ) : (
- ''
- )}
- .
- >
- );
- },
- scheduled: (e) => {
- const maintenanceType = getMaintenanceDescription(e.description);
- return (
- <>
- Linode is scheduled to be{' '}
- migrated for{' '}
- {maintenanceType === 'maintenance' ? (
- maintenance
- ) : (
- <>
- {maintenanceType} maintenance
- >
- )}
- {e.secondary_entity ? (
- <>
- {' '}
- with config
- >
- ) : (
- ''
- )}
- .
- >
- );
- },
- started: (e) => {
- const maintenanceType = getMaintenanceDescription(e.description);
- return (
- <>
- Linode is being{' '}
- migrated for{' '}
- {maintenanceType === 'maintenance' ? (
- maintenance
- ) : (
- <>
- {maintenanceType} maintenance
- >
- )}
- {e.secondary_entity ? (
- <>
- {' '}
- with config
- >
- ) : (
- ''
- )}
- .
- >
- );
- },
+ failed: (e) => (
+ <>
+ Migration failed for Linode{' '}
+ .
+ >
+ ),
+ finished: (e) => (
+ <>
+ Linode has been{' '}
+ migrated.
+ >
+ ),
+ scheduled: (e) => (
+ <>
+ Linode is scheduled to be{' '}
+ migrated.
+ >
+ ),
+ started: (e) => (
+ <>
+ Linode is being{' '}
+ migrated.
+ >
+ ),
},
linode_migrate_datacenter: {
failed: (e) => (
From 2fd161c0a2b37592db0471891ec06714c87431f5 Mon Sep 17 00:00:00 2001
From: Alban Bailly
Date: Mon, 8 Dec 2025 19:31:53 +0100
Subject: [PATCH 90/91] Cloud version 1.156.0, API v4 version 0.154.0,
Validation version 0.79.0, UI version 0.23.0, Utilities version 0.13.0,
Queries version 0.18.0
---
...r-13078-upcoming-features-1762869732236.md | 5 -
...r-13079-upcoming-features-1762861826541.md | 5 -
.../pr-13097-changed-1763149227691.md | 5 -
.../pr-13119-tech-stories-1764007445902.md | 5 -
...r-13127-upcoming-features-1763979506001.md | 5 -
...r-13133-upcoming-features-1764084018326.md | 5 -
...r-13146-upcoming-features-1764600095421.md | 5 -
...r-13148-upcoming-features-1764600387228.md | 5 -
...r-13156-upcoming-features-1764708047549.md | 5 -
.../pr-13174-changed-1764961622718.md | 5 -
packages/api-v4/CHANGELOG.md | 22 +++++
packages/api-v4/package.json | 2 +-
.../pr-13032-changed-1761686860911.md | 5 -
.../pr-13057-changed-1762343659819.md | 5 -
.../pr-13059-fixed-1762972220664.md | 5 -
.../pr-13060-tech-stories-1762357716157.md | 5 -
...r-13068-upcoming-features-1762930872294.md | 5 -
.../pr-13075-added-1762776269124.md | 5 -
...r-13079-upcoming-features-1762861957439.md | 5 -
...r-13081-upcoming-features-1762935895154.md | 5 -
.../pr-13082-fixed-1762957507469.md | 5 -
.../pr-13083-tests-1762969859293.md | 5 -
...r-13087-upcoming-features-1763109384091.md | 5 -
...r-13088-upcoming-features-1763032920807.md | 5 -
...r-13089-upcoming-features-1763100678421.md | 5 -
...r-13090-upcoming-features-1763045734612.md | 5 -
...r-13092-upcoming-features-1763093527692.md | 5 -
.../pr-13093-added-1766788494029.md | 5 -
...r-13094-upcoming-features-1763558731421.md | 5 -
...r-13095-upcoming-features-1763130670048.md | 5 -
.../pr-13097-added-1763149132736.md | 5 -
.../pr-13098-fixed-1763371721536.md | 5 -
.../pr-13099-changed-1763377007914.md | 5 -
.../pr-13100-fixed-1764265664121.md | 5 -
...r-13104-upcoming-features-1763472761959.md | 5 -
.../pr-13107-tests-1763492424120.md | 5 -
...r-13108-upcoming-features-1763746838424.md | 5 -
.../pr-13109-fixed-1763535418420.md | 5 -
...r-13110-upcoming-features-1763617588411.md | 5 -
...r-13111-upcoming-features-1763615562636.md | 5 -
...r-13112-upcoming-features-1763627065100.md | 5 -
.../pr-13113-fixed-1763631318653.md | 5 -
...r-13115-upcoming-features-1763630712827.md | 5 -
...r-13116-upcoming-features-1763642170773.md | 5 -
...r-13117-upcoming-features-1763642787362.md | 5 -
.../pr-13118-fixed-1763722681223.md | 5 -
.../pr-13119-tech-stories-1764007553451.md | 5 -
.../pr-13119-tech-stories-1764007583363.md | 5 -
.../pr-13119-tech-stories-1764007617066.md | 5 -
.../pr-13121-fixed-1763734247008.md | 5 -
.../pr-13122-changed-1763759617340.md | 5 -
...r-13122-upcoming-features-1763759704504.md | 5 -
...r-13123-upcoming-features-1763724960594.md | 5 -
.../pr-13124-changed-1763726824931.md | 5 -
...r-13125-upcoming-features-1763760083439.md | 5 -
...r-13127-upcoming-features-1763979546789.md | 5 -
.../pr-13129-fixed-1763987727502.md | 5 -
...r-13130-upcoming-features-1763993150579.md | 5 -
.../pr-13131-changed-1763990723303.md | 5 -
...r-13132-upcoming-features-1764056438332.md | 5 -
...r-13133-upcoming-features-1764084041956.md | 5 -
...r-13134-upcoming-features-1764110309888.md | 5 -
.../pr-13135-changed-1764659811788.md | 5 -
...r-13137-upcoming-features-1764156818321.md | 5 -
...r-13138-upcoming-features-1764681439890.md | 5 -
.../pr-13139-fixed-1764247173880.md | 5 -
.../pr-13140-changed-1764317364992.md | 5 -
...r-13141-upcoming-features-1764311100780.md | 5 -
.../pr-13142-fixed-1764342267912.md | 5 -
.../pr-13143-fixed-1764672257327.md | 5 -
...r-13146-upcoming-features-1764599840190.md | 5 -
...r-13147-upcoming-features-1764592604792.md | 5 -
.../pr-13153-fixed-1764672225221.md | 5 -
...r-13156-upcoming-features-1764708766786.md | 5 -
...r-13157-upcoming-features-1764741522593.md | 5 -
...r-13158-upcoming-features-1764752133530.md | 5 -
...r-13164-upcoming-features-1764838771826.md | 5 -
...r-13165-upcoming-features-1764951969980.md | 5 -
.../pr-13166-changed-1764854054943.md | 5 -
.../pr-13168-fixed-1765192706974.md | 5 -
...r-13169-upcoming-features-1764884932241.md | 5 -
...r-13172-upcoming-features-1764950932547.md | 5 -
.../pr-13173-fixed-1764944067009.md | 5 -
.../pr-13174-fixed-1764961648716.md | 5 -
.../pr-13175-added-1765199020354.md | 5 -
packages/manager/CHANGELOG.md | 94 +++++++++++++++++++
packages/manager/package.json | 2 +-
...r-13078-upcoming-features-1762869790174.md | 5 -
.../pr-13097-changed-1763149256983.md | 5 -
...r-13148-upcoming-features-1764600420579.md | 5 -
packages/queries/CHANGELOG.md | 12 +++
packages/queries/package.json | 2 +-
.../pr-13119-tech-stories-1764007518381.md | 5 -
packages/utilities/CHANGELOG.md | 7 ++
packages/utilities/package.json | 2 +-
...r-13079-upcoming-features-1762861891552.md | 5 -
...r-13148-upcoming-features-1764600446107.md | 5 -
.../pr-13166-changed-1764854111433.md | 5 -
packages/validation/CHANGELOG.md | 12 +++
packages/validation/package.json | 2 +-
100 files changed, 152 insertions(+), 455 deletions(-)
delete mode 100644 packages/api-v4/.changeset/pr-13078-upcoming-features-1762869732236.md
delete mode 100644 packages/api-v4/.changeset/pr-13079-upcoming-features-1762861826541.md
delete mode 100644 packages/api-v4/.changeset/pr-13097-changed-1763149227691.md
delete mode 100644 packages/api-v4/.changeset/pr-13119-tech-stories-1764007445902.md
delete mode 100644 packages/api-v4/.changeset/pr-13127-upcoming-features-1763979506001.md
delete mode 100644 packages/api-v4/.changeset/pr-13133-upcoming-features-1764084018326.md
delete mode 100644 packages/api-v4/.changeset/pr-13146-upcoming-features-1764600095421.md
delete mode 100644 packages/api-v4/.changeset/pr-13148-upcoming-features-1764600387228.md
delete mode 100644 packages/api-v4/.changeset/pr-13156-upcoming-features-1764708047549.md
delete mode 100644 packages/api-v4/.changeset/pr-13174-changed-1764961622718.md
delete mode 100644 packages/manager/.changeset/pr-13032-changed-1761686860911.md
delete mode 100644 packages/manager/.changeset/pr-13057-changed-1762343659819.md
delete mode 100644 packages/manager/.changeset/pr-13059-fixed-1762972220664.md
delete mode 100644 packages/manager/.changeset/pr-13060-tech-stories-1762357716157.md
delete mode 100644 packages/manager/.changeset/pr-13068-upcoming-features-1762930872294.md
delete mode 100644 packages/manager/.changeset/pr-13075-added-1762776269124.md
delete mode 100644 packages/manager/.changeset/pr-13079-upcoming-features-1762861957439.md
delete mode 100644 packages/manager/.changeset/pr-13081-upcoming-features-1762935895154.md
delete mode 100644 packages/manager/.changeset/pr-13082-fixed-1762957507469.md
delete mode 100644 packages/manager/.changeset/pr-13083-tests-1762969859293.md
delete mode 100644 packages/manager/.changeset/pr-13087-upcoming-features-1763109384091.md
delete mode 100644 packages/manager/.changeset/pr-13088-upcoming-features-1763032920807.md
delete mode 100644 packages/manager/.changeset/pr-13089-upcoming-features-1763100678421.md
delete mode 100644 packages/manager/.changeset/pr-13090-upcoming-features-1763045734612.md
delete mode 100644 packages/manager/.changeset/pr-13092-upcoming-features-1763093527692.md
delete mode 100644 packages/manager/.changeset/pr-13093-added-1766788494029.md
delete mode 100644 packages/manager/.changeset/pr-13094-upcoming-features-1763558731421.md
delete mode 100644 packages/manager/.changeset/pr-13095-upcoming-features-1763130670048.md
delete mode 100644 packages/manager/.changeset/pr-13097-added-1763149132736.md
delete mode 100644 packages/manager/.changeset/pr-13098-fixed-1763371721536.md
delete mode 100644 packages/manager/.changeset/pr-13099-changed-1763377007914.md
delete mode 100644 packages/manager/.changeset/pr-13100-fixed-1764265664121.md
delete mode 100644 packages/manager/.changeset/pr-13104-upcoming-features-1763472761959.md
delete mode 100644 packages/manager/.changeset/pr-13107-tests-1763492424120.md
delete mode 100644 packages/manager/.changeset/pr-13108-upcoming-features-1763746838424.md
delete mode 100644 packages/manager/.changeset/pr-13109-fixed-1763535418420.md
delete mode 100644 packages/manager/.changeset/pr-13110-upcoming-features-1763617588411.md
delete mode 100644 packages/manager/.changeset/pr-13111-upcoming-features-1763615562636.md
delete mode 100644 packages/manager/.changeset/pr-13112-upcoming-features-1763627065100.md
delete mode 100644 packages/manager/.changeset/pr-13113-fixed-1763631318653.md
delete mode 100644 packages/manager/.changeset/pr-13115-upcoming-features-1763630712827.md
delete mode 100644 packages/manager/.changeset/pr-13116-upcoming-features-1763642170773.md
delete mode 100644 packages/manager/.changeset/pr-13117-upcoming-features-1763642787362.md
delete mode 100644 packages/manager/.changeset/pr-13118-fixed-1763722681223.md
delete mode 100644 packages/manager/.changeset/pr-13119-tech-stories-1764007553451.md
delete mode 100644 packages/manager/.changeset/pr-13119-tech-stories-1764007583363.md
delete mode 100644 packages/manager/.changeset/pr-13119-tech-stories-1764007617066.md
delete mode 100644 packages/manager/.changeset/pr-13121-fixed-1763734247008.md
delete mode 100644 packages/manager/.changeset/pr-13122-changed-1763759617340.md
delete mode 100644 packages/manager/.changeset/pr-13122-upcoming-features-1763759704504.md
delete mode 100644 packages/manager/.changeset/pr-13123-upcoming-features-1763724960594.md
delete mode 100644 packages/manager/.changeset/pr-13124-changed-1763726824931.md
delete mode 100644 packages/manager/.changeset/pr-13125-upcoming-features-1763760083439.md
delete mode 100644 packages/manager/.changeset/pr-13127-upcoming-features-1763979546789.md
delete mode 100644 packages/manager/.changeset/pr-13129-fixed-1763987727502.md
delete mode 100644 packages/manager/.changeset/pr-13130-upcoming-features-1763993150579.md
delete mode 100644 packages/manager/.changeset/pr-13131-changed-1763990723303.md
delete mode 100644 packages/manager/.changeset/pr-13132-upcoming-features-1764056438332.md
delete mode 100644 packages/manager/.changeset/pr-13133-upcoming-features-1764084041956.md
delete mode 100644 packages/manager/.changeset/pr-13134-upcoming-features-1764110309888.md
delete mode 100644 packages/manager/.changeset/pr-13135-changed-1764659811788.md
delete mode 100644 packages/manager/.changeset/pr-13137-upcoming-features-1764156818321.md
delete mode 100644 packages/manager/.changeset/pr-13138-upcoming-features-1764681439890.md
delete mode 100644 packages/manager/.changeset/pr-13139-fixed-1764247173880.md
delete mode 100644 packages/manager/.changeset/pr-13140-changed-1764317364992.md
delete mode 100644 packages/manager/.changeset/pr-13141-upcoming-features-1764311100780.md
delete mode 100644 packages/manager/.changeset/pr-13142-fixed-1764342267912.md
delete mode 100644 packages/manager/.changeset/pr-13143-fixed-1764672257327.md
delete mode 100644 packages/manager/.changeset/pr-13146-upcoming-features-1764599840190.md
delete mode 100644 packages/manager/.changeset/pr-13147-upcoming-features-1764592604792.md
delete mode 100644 packages/manager/.changeset/pr-13153-fixed-1764672225221.md
delete mode 100644 packages/manager/.changeset/pr-13156-upcoming-features-1764708766786.md
delete mode 100644 packages/manager/.changeset/pr-13157-upcoming-features-1764741522593.md
delete mode 100644 packages/manager/.changeset/pr-13158-upcoming-features-1764752133530.md
delete mode 100644 packages/manager/.changeset/pr-13164-upcoming-features-1764838771826.md
delete mode 100644 packages/manager/.changeset/pr-13165-upcoming-features-1764951969980.md
delete mode 100644 packages/manager/.changeset/pr-13166-changed-1764854054943.md
delete mode 100644 packages/manager/.changeset/pr-13168-fixed-1765192706974.md
delete mode 100644 packages/manager/.changeset/pr-13169-upcoming-features-1764884932241.md
delete mode 100644 packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md
delete mode 100644 packages/manager/.changeset/pr-13173-fixed-1764944067009.md
delete mode 100644 packages/manager/.changeset/pr-13174-fixed-1764961648716.md
delete mode 100644 packages/manager/.changeset/pr-13175-added-1765199020354.md
delete mode 100644 packages/queries/.changeset/pr-13078-upcoming-features-1762869790174.md
delete mode 100644 packages/queries/.changeset/pr-13097-changed-1763149256983.md
delete mode 100644 packages/queries/.changeset/pr-13148-upcoming-features-1764600420579.md
delete mode 100644 packages/utilities/.changeset/pr-13119-tech-stories-1764007518381.md
delete mode 100644 packages/validation/.changeset/pr-13079-upcoming-features-1762861891552.md
delete mode 100644 packages/validation/.changeset/pr-13148-upcoming-features-1764600446107.md
delete mode 100644 packages/validation/.changeset/pr-13166-changed-1764854111433.md
diff --git a/packages/api-v4/.changeset/pr-13078-upcoming-features-1762869732236.md b/packages/api-v4/.changeset/pr-13078-upcoming-features-1762869732236.md
deleted file mode 100644
index f671a53b5a9..00000000000
--- a/packages/api-v4/.changeset/pr-13078-upcoming-features-1762869732236.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Upcoming Features
----
-
-Add new API endpoints and types for Network Load Balancers ([#13078](https://github.com/linode/manager/pull/13078))
diff --git a/packages/api-v4/.changeset/pr-13079-upcoming-features-1762861826541.md b/packages/api-v4/.changeset/pr-13079-upcoming-features-1762861826541.md
deleted file mode 100644
index a9fa484079f..00000000000
--- a/packages/api-v4/.changeset/pr-13079-upcoming-features-1762861826541.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Upcoming Features
----
-
-Update FirewallRuleType to support ruleset ([#13079](https://github.com/linode/manager/pull/13079))
diff --git a/packages/api-v4/.changeset/pr-13097-changed-1763149227691.md b/packages/api-v4/.changeset/pr-13097-changed-1763149227691.md
deleted file mode 100644
index a64d20f3418..00000000000
--- a/packages/api-v4/.changeset/pr-13097-changed-1763149227691.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Changed
----
-
-Update database restoreWithBackup data to include region ([#13097](https://github.com/linode/manager/pull/13097))
diff --git a/packages/api-v4/.changeset/pr-13119-tech-stories-1764007445902.md b/packages/api-v4/.changeset/pr-13119-tech-stories-1764007445902.md
deleted file mode 100644
index db0f148184b..00000000000
--- a/packages/api-v4/.changeset/pr-13119-tech-stories-1764007445902.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Tech Stories
----
-
-Add `@types/node` as a devDependency ([#13119](https://github.com/linode/manager/pull/13119))
diff --git a/packages/api-v4/.changeset/pr-13127-upcoming-features-1763979506001.md b/packages/api-v4/.changeset/pr-13127-upcoming-features-1763979506001.md
deleted file mode 100644
index 82561a7e436..00000000000
--- a/packages/api-v4/.changeset/pr-13127-upcoming-features-1763979506001.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Upcoming Features
----
-
-Add additional status types `enabling`, `disabling`, `provisioning` in CloudPulse alerts ([#13127](https://github.com/linode/manager/pull/13127))
diff --git a/packages/api-v4/.changeset/pr-13133-upcoming-features-1764084018326.md b/packages/api-v4/.changeset/pr-13133-upcoming-features-1764084018326.md
deleted file mode 100644
index 3e22f0af003..00000000000
--- a/packages/api-v4/.changeset/pr-13133-upcoming-features-1764084018326.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Upcoming Features
----
-
-CloudPulse-Metrics: Update `entity_ids` type in `CloudPulseMetricsRequest` for metrics api in endpoints dahsboard ([#13133](https://github.com/linode/manager/pull/13133))
diff --git a/packages/api-v4/.changeset/pr-13146-upcoming-features-1764600095421.md b/packages/api-v4/.changeset/pr-13146-upcoming-features-1764600095421.md
deleted file mode 100644
index e0cb2c1aa43..00000000000
--- a/packages/api-v4/.changeset/pr-13146-upcoming-features-1764600095421.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Upcoming Features
----
-
-Add `deleted` property to `FirewallPrefixList` type after API update ([#13146](https://github.com/linode/manager/pull/13146))
diff --git a/packages/api-v4/.changeset/pr-13148-upcoming-features-1764600387228.md b/packages/api-v4/.changeset/pr-13148-upcoming-features-1764600387228.md
deleted file mode 100644
index 545cf23d859..00000000000
--- a/packages/api-v4/.changeset/pr-13148-upcoming-features-1764600387228.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Upcoming Features
----
-
-Added Database Connection Pool types and endpoints ([#13148](https://github.com/linode/manager/pull/13148))
diff --git a/packages/api-v4/.changeset/pr-13156-upcoming-features-1764708047549.md b/packages/api-v4/.changeset/pr-13156-upcoming-features-1764708047549.md
deleted file mode 100644
index 991b3820fb3..00000000000
--- a/packages/api-v4/.changeset/pr-13156-upcoming-features-1764708047549.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Upcoming Features
----
-
-Add 'Cloud Firewall Rule Set' to AccountCapability type ([#13156](https://github.com/linode/manager/pull/13156))
diff --git a/packages/api-v4/.changeset/pr-13174-changed-1764961622718.md b/packages/api-v4/.changeset/pr-13174-changed-1764961622718.md
deleted file mode 100644
index fe886996b9b..00000000000
--- a/packages/api-v4/.changeset/pr-13174-changed-1764961622718.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/api-v4": Changed
----
-
-Add private_network to `DatabaseBackupsPayload` ([#13174](https://github.com/linode/manager/pull/13174))
diff --git a/packages/api-v4/CHANGELOG.md b/packages/api-v4/CHANGELOG.md
index f290607bda5..8fd23ca90a8 100644
--- a/packages/api-v4/CHANGELOG.md
+++ b/packages/api-v4/CHANGELOG.md
@@ -1,3 +1,25 @@
+## [2025-12-10] - v0.154.0
+
+
+### Changed:
+
+- Update database restoreWithBackup data to include region ([#13097](https://github.com/linode/manager/pull/13097))
+- Add private_network to `DatabaseBackupsPayload` ([#13174](https://github.com/linode/manager/pull/13174))
+
+### Tech Stories:
+
+- Add `@types/node` as a devDependency ([#13119](https://github.com/linode/manager/pull/13119))
+
+### Upcoming Features:
+
+- Add new API endpoints and types for Network Load Balancers ([#13078](https://github.com/linode/manager/pull/13078))
+- Update FirewallRuleType to support ruleset ([#13079](https://github.com/linode/manager/pull/13079))
+- Add additional status types `enabling`, `disabling`, `provisioning` in CloudPulse alerts ([#13127](https://github.com/linode/manager/pull/13127))
+- CloudPulse-Metrics: Update `entity_ids` type in `CloudPulseMetricsRequest` for metrics api in endpoints dahsboard ([#13133](https://github.com/linode/manager/pull/13133))
+- Add `deleted` property to `FirewallPrefixList` type after API update ([#13146](https://github.com/linode/manager/pull/13146))
+- Added Database Connection Pool types and endpoints ([#13148](https://github.com/linode/manager/pull/13148))
+- Add 'Cloud Firewall Rule Set' to AccountCapability type ([#13156](https://github.com/linode/manager/pull/13156))
+
## [2025-11-18] - v0.153.0
diff --git a/packages/api-v4/package.json b/packages/api-v4/package.json
index 033074da041..bc12f54b67b 100644
--- a/packages/api-v4/package.json
+++ b/packages/api-v4/package.json
@@ -1,6 +1,6 @@
{
"name": "@linode/api-v4",
- "version": "0.153.0",
+ "version": "0.154.0",
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
"bugs": {
"url": "https://github.com/linode/manager/issues"
diff --git a/packages/manager/.changeset/pr-13032-changed-1761686860911.md b/packages/manager/.changeset/pr-13032-changed-1761686860911.md
deleted file mode 100644
index dcdc79dea36..00000000000
--- a/packages/manager/.changeset/pr-13032-changed-1761686860911.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
-Update icon svg files to match with Akamai design system ([#13032](https://github.com/linode/manager/pull/13032))
diff --git a/packages/manager/.changeset/pr-13057-changed-1762343659819.md b/packages/manager/.changeset/pr-13057-changed-1762343659819.md
deleted file mode 100644
index e50a5c0e329..00000000000
--- a/packages/manager/.changeset/pr-13057-changed-1762343659819.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Tech Stories
----
-
-DBaaS: Replace the dropdowns in Database cluster settings page with CDS select web component ([#13057](https://github.com/linode/manager/pull/13057))
diff --git a/packages/manager/.changeset/pr-13059-fixed-1762972220664.md b/packages/manager/.changeset/pr-13059-fixed-1762972220664.md
deleted file mode 100644
index 8279d18f00f..00000000000
--- a/packages/manager/.changeset/pr-13059-fixed-1762972220664.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-Fix incorrect maintenance time display in the Upcoming maintenance table ([#13059](https://github.com/linode/manager/pull/13059))
diff --git a/packages/manager/.changeset/pr-13060-tech-stories-1762357716157.md b/packages/manager/.changeset/pr-13060-tech-stories-1762357716157.md
deleted file mode 100644
index 04211c454c6..00000000000
--- a/packages/manager/.changeset/pr-13060-tech-stories-1762357716157.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Tech Stories
----
-
-Replace Formik with React Hook Form in MaintenanceWindow ([#13060](https://github.com/linode/manager/pull/13060))
diff --git a/packages/manager/.changeset/pr-13068-upcoming-features-1762930872294.md b/packages/manager/.changeset/pr-13068-upcoming-features-1762930872294.md
deleted file mode 100644
index 47909ba6d28..00000000000
--- a/packages/manager/.changeset/pr-13068-upcoming-features-1762930872294.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Implement feature flag and routing for NLB ([#13068](https://github.com/linode/manager/pull/13068))
diff --git a/packages/manager/.changeset/pr-13075-added-1762776269124.md b/packages/manager/.changeset/pr-13075-added-1762776269124.md
deleted file mode 100644
index ed452d6cbe3..00000000000
--- a/packages/manager/.changeset/pr-13075-added-1762776269124.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Added
----
-
-IAM Parent/Child: permissions switch account ([#13075](https://github.com/linode/manager/pull/13075))
diff --git a/packages/manager/.changeset/pr-13079-upcoming-features-1762861957439.md b/packages/manager/.changeset/pr-13079-upcoming-features-1762861957439.md
deleted file mode 100644
index 63b2dd22823..00000000000
--- a/packages/manager/.changeset/pr-13079-upcoming-features-1762861957439.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add new Firewall RuleSet row layout ([#13079](https://github.com/linode/manager/pull/13079))
diff --git a/packages/manager/.changeset/pr-13081-upcoming-features-1762935895154.md b/packages/manager/.changeset/pr-13081-upcoming-features-1762935895154.md
deleted file mode 100644
index b65763c0fc7..00000000000
--- a/packages/manager/.changeset/pr-13081-upcoming-features-1762935895154.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Disable premium plan tab if corresponding g7 dedicated plans are available ([#13081](https://github.com/linode/manager/pull/13081))
diff --git a/packages/manager/.changeset/pr-13082-fixed-1762957507469.md b/packages/manager/.changeset/pr-13082-fixed-1762957507469.md
deleted file mode 100644
index 004e1cb6473..00000000000
--- a/packages/manager/.changeset/pr-13082-fixed-1762957507469.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-IAM: the aria-label for the Users table action menu displays an incorrect username ([#13082](https://github.com/linode/manager/pull/13082))
diff --git a/packages/manager/.changeset/pr-13083-tests-1762969859293.md b/packages/manager/.changeset/pr-13083-tests-1762969859293.md
deleted file mode 100644
index 9b91e05e390..00000000000
--- a/packages/manager/.changeset/pr-13083-tests-1762969859293.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Tests
----
-
-Fix flakey vm-host test ([#13083](https://github.com/linode/manager/pull/13083))
diff --git a/packages/manager/.changeset/pr-13087-upcoming-features-1763109384091.md b/packages/manager/.changeset/pr-13087-upcoming-features-1763109384091.md
deleted file mode 100644
index 96635443a16..00000000000
--- a/packages/manager/.changeset/pr-13087-upcoming-features-1763109384091.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Object storage summary page migrated to use table view ([#13087](https://github.com/linode/manager/pull/13087))
diff --git a/packages/manager/.changeset/pr-13088-upcoming-features-1763032920807.md b/packages/manager/.changeset/pr-13088-upcoming-features-1763032920807.md
deleted file mode 100644
index 7e8f72e9126..00000000000
--- a/packages/manager/.changeset/pr-13088-upcoming-features-1763032920807.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Scaffolding setup for widget level dimension filters in cloudpulse metrics and group by issue fix in cloudpulse metrics ([#13088](https://github.com/linode/manager/pull/13088))
diff --git a/packages/manager/.changeset/pr-13089-upcoming-features-1763100678421.md b/packages/manager/.changeset/pr-13089-upcoming-features-1763100678421.md
deleted file mode 100644
index 0ee6419cf61..00000000000
--- a/packages/manager/.changeset/pr-13089-upcoming-features-1763100678421.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Integrate Firewall-nodebalancer support for ACLP-Alerting ([#13089](https://github.com/linode/manager/pull/13089))
diff --git a/packages/manager/.changeset/pr-13090-upcoming-features-1763045734612.md b/packages/manager/.changeset/pr-13090-upcoming-features-1763045734612.md
deleted file mode 100644
index 85af714871c..00000000000
--- a/packages/manager/.changeset/pr-13090-upcoming-features-1763045734612.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add tooltip for Rules column header in Firewall Rules table ([#13090](https://github.com/linode/manager/pull/13090))
diff --git a/packages/manager/.changeset/pr-13092-upcoming-features-1763093527692.md b/packages/manager/.changeset/pr-13092-upcoming-features-1763093527692.md
deleted file mode 100644
index 3d6050b3391..00000000000
--- a/packages/manager/.changeset/pr-13092-upcoming-features-1763093527692.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-CloudPulse-Metrics: Enhance `CloudPulseWidgetUtils.ts` to handle id to label conversion of linode associated with volume in volumes service ([#13092](https://github.com/linode/manager/pull/13092))
diff --git a/packages/manager/.changeset/pr-13093-added-1766788494029.md b/packages/manager/.changeset/pr-13093-added-1766788494029.md
deleted file mode 100644
index 401b517416d..00000000000
--- a/packages/manager/.changeset/pr-13093-added-1766788494029.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Implement Filtering for Plans table ([#13093](https://github.com/linode/manager/pull/13093))
diff --git a/packages/manager/.changeset/pr-13094-upcoming-features-1763558731421.md b/packages/manager/.changeset/pr-13094-upcoming-features-1763558731421.md
deleted file mode 100644
index 825c65ad24d..00000000000
--- a/packages/manager/.changeset/pr-13094-upcoming-features-1763558731421.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Update Firewall Rule Drawer to support referencing Rule Set ([#13094](https://github.com/linode/manager/pull/13094))
diff --git a/packages/manager/.changeset/pr-13095-upcoming-features-1763130670048.md b/packages/manager/.changeset/pr-13095-upcoming-features-1763130670048.md
deleted file mode 100644
index 6236a2c67b8..00000000000
--- a/packages/manager/.changeset/pr-13095-upcoming-features-1763130670048.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Edit Stream form: remove cluster IDs from the edited stream that no longer exist or have log generation disabled ([#13095](https://github.com/linode/manager/pull/13095))
diff --git a/packages/manager/.changeset/pr-13097-added-1763149132736.md b/packages/manager/.changeset/pr-13097-added-1763149132736.md
deleted file mode 100644
index 8759fd74af1..00000000000
--- a/packages/manager/.changeset/pr-13097-added-1763149132736.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Added
----
-
-Region select to Database Backups tab ([#13097](https://github.com/linode/manager/pull/13097))
diff --git a/packages/manager/.changeset/pr-13098-fixed-1763371721536.md b/packages/manager/.changeset/pr-13098-fixed-1763371721536.md
deleted file mode 100644
index c7e5164cde8..00000000000
--- a/packages/manager/.changeset/pr-13098-fixed-1763371721536.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-Alignment with Linode row backup cell icon ([#13098](https://github.com/linode/manager/pull/13098))
diff --git a/packages/manager/.changeset/pr-13099-changed-1763377007914.md b/packages/manager/.changeset/pr-13099-changed-1763377007914.md
deleted file mode 100644
index 7a0e0ee8287..00000000000
--- a/packages/manager/.changeset/pr-13099-changed-1763377007914.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
-IAM: fix permission check for detaching volumes ([#13099](https://github.com/linode/manager/pull/13099))
diff --git a/packages/manager/.changeset/pr-13100-fixed-1764265664121.md b/packages/manager/.changeset/pr-13100-fixed-1764265664121.md
deleted file mode 100644
index 4371d0b1da5..00000000000
--- a/packages/manager/.changeset/pr-13100-fixed-1764265664121.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-Plans panel pagination bug fix ([#13100](https://github.com/linode/manager/pull/13100))
diff --git a/packages/manager/.changeset/pr-13104-upcoming-features-1763472761959.md b/packages/manager/.changeset/pr-13104-upcoming-features-1763472761959.md
deleted file mode 100644
index ff43e8785fe..00000000000
--- a/packages/manager/.changeset/pr-13104-upcoming-features-1763472761959.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
- Implement mocks and factories for Network LoadBalancer ([#13104](https://github.com/linode/manager/pull/13104))
diff --git a/packages/manager/.changeset/pr-13107-tests-1763492424120.md b/packages/manager/.changeset/pr-13107-tests-1763492424120.md
deleted file mode 100644
index 5f1b879f190..00000000000
--- a/packages/manager/.changeset/pr-13107-tests-1763492424120.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Tests
----
-
-Fixed various test failures when running tests against Prod environment ([#13107](https://github.com/linode/manager/pull/13107))
diff --git a/packages/manager/.changeset/pr-13108-upcoming-features-1763746838424.md b/packages/manager/.changeset/pr-13108-upcoming-features-1763746838424.md
deleted file mode 100644
index cd7c25bc363..00000000000
--- a/packages/manager/.changeset/pr-13108-upcoming-features-1763746838424.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-New Rule Set Details drawer with Marked for Deletion status ([#13108](https://github.com/linode/manager/pull/13108))
diff --git a/packages/manager/.changeset/pr-13109-fixed-1763535418420.md b/packages/manager/.changeset/pr-13109-fixed-1763535418420.md
deleted file mode 100644
index 5ed542147bf..00000000000
--- a/packages/manager/.changeset/pr-13109-fixed-1763535418420.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-The `firewall_id` error on LKE pool update ([#13109](https://github.com/linode/manager/pull/13109))
diff --git a/packages/manager/.changeset/pr-13110-upcoming-features-1763617588411.md b/packages/manager/.changeset/pr-13110-upcoming-features-1763617588411.md
deleted file mode 100644
index 17bae8d23d4..00000000000
--- a/packages/manager/.changeset/pr-13110-upcoming-features-1763617588411.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-ACLP-Alerting: Filtering entities for firewall system alerts, add tooltip text to Entity Type component ([#13110](https://github.com/linode/manager/pull/13110))
diff --git a/packages/manager/.changeset/pr-13111-upcoming-features-1763615562636.md b/packages/manager/.changeset/pr-13111-upcoming-features-1763615562636.md
deleted file mode 100644
index 7fc2ab5ef65..00000000000
--- a/packages/manager/.changeset/pr-13111-upcoming-features-1763615562636.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-CloudPulse-Metrics: Remove filtering of firewalls and region filter dependency on firewall-select in Firewalls ([#13111](https://github.com/linode/manager/pull/13111))
diff --git a/packages/manager/.changeset/pr-13112-upcoming-features-1763627065100.md b/packages/manager/.changeset/pr-13112-upcoming-features-1763627065100.md
deleted file mode 100644
index bc0da4f2abb..00000000000
--- a/packages/manager/.changeset/pr-13112-upcoming-features-1763627065100.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add NetworkLoadBalancersLanding component to render NLB list with pagination, loading/error and table columns ([#13112](https://github.com/linode/manager/pull/13112))
diff --git a/packages/manager/.changeset/pr-13113-fixed-1763631318653.md b/packages/manager/.changeset/pr-13113-fixed-1763631318653.md
deleted file mode 100644
index 5789752b6ca..00000000000
--- a/packages/manager/.changeset/pr-13113-fixed-1763631318653.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-Disabled Tab + Tooltip styles & accessibility ([#13113](https://github.com/linode/manager/pull/13113))
diff --git a/packages/manager/.changeset/pr-13115-upcoming-features-1763630712827.md b/packages/manager/.changeset/pr-13115-upcoming-features-1763630712827.md
deleted file mode 100644
index 881f5d29a08..00000000000
--- a/packages/manager/.changeset/pr-13115-upcoming-features-1763630712827.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Implement filter for GPU plans in plans panel ([#13115](https://github.com/linode/manager/pull/13115))
diff --git a/packages/manager/.changeset/pr-13116-upcoming-features-1763642170773.md b/packages/manager/.changeset/pr-13116-upcoming-features-1763642170773.md
deleted file mode 100644
index a3617688321..00000000000
--- a/packages/manager/.changeset/pr-13116-upcoming-features-1763642170773.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add integration changes with `CloudPulseWidget` for widget level dimension support in CloudPulse metrics ([#13116](https://github.com/linode/manager/pull/13116))
diff --git a/packages/manager/.changeset/pr-13117-upcoming-features-1763642787362.md b/packages/manager/.changeset/pr-13117-upcoming-features-1763642787362.md
deleted file mode 100644
index 9467c4a06c1..00000000000
--- a/packages/manager/.changeset/pr-13117-upcoming-features-1763642787362.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Destination Form: fixes and improvements for Sample Destination Object Name ([#13117](https://github.com/linode/manager/pull/13117))
diff --git a/packages/manager/.changeset/pr-13118-fixed-1763722681223.md b/packages/manager/.changeset/pr-13118-fixed-1763722681223.md
deleted file mode 100644
index 491ee99f5d2..00000000000
--- a/packages/manager/.changeset/pr-13118-fixed-1763722681223.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-IAM: The StackScript/Linode selector is enabled in the Create Linode flow when the user doesn’t have the create_linode permission ([#13118](https://github.com/linode/manager/pull/13118))
diff --git a/packages/manager/.changeset/pr-13119-tech-stories-1764007553451.md b/packages/manager/.changeset/pr-13119-tech-stories-1764007553451.md
deleted file mode 100644
index 9141261a386..00000000000
--- a/packages/manager/.changeset/pr-13119-tech-stories-1764007553451.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Tech Stories
----
-
-Update Vite from `7.1.11` to `7.2.2` ([#13119](https://github.com/linode/manager/pull/13119))
diff --git a/packages/manager/.changeset/pr-13119-tech-stories-1764007583363.md b/packages/manager/.changeset/pr-13119-tech-stories-1764007583363.md
deleted file mode 100644
index 65133e69b95..00000000000
--- a/packages/manager/.changeset/pr-13119-tech-stories-1764007583363.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Tech Stories
----
-
-Fix circular imports in CloudPulse ([#13119](https://github.com/linode/manager/pull/13119))
diff --git a/packages/manager/.changeset/pr-13119-tech-stories-1764007617066.md b/packages/manager/.changeset/pr-13119-tech-stories-1764007617066.md
deleted file mode 100644
index d79f961c70c..00000000000
--- a/packages/manager/.changeset/pr-13119-tech-stories-1764007617066.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Tech Stories
----
-
-Update vitest from `v3` to `v4` ([#13119](https://github.com/linode/manager/pull/13119))
diff --git a/packages/manager/.changeset/pr-13121-fixed-1763734247008.md b/packages/manager/.changeset/pr-13121-fixed-1763734247008.md
deleted file mode 100644
index 30842b6ced6..00000000000
--- a/packages/manager/.changeset/pr-13121-fixed-1763734247008.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-DBaaS - Manage Networking VPC fields not handling error response ([#13121](https://github.com/linode/manager/pull/13121))
diff --git a/packages/manager/.changeset/pr-13122-changed-1763759617340.md b/packages/manager/.changeset/pr-13122-changed-1763759617340.md
deleted file mode 100644
index 06175a04a56..00000000000
--- a/packages/manager/.changeset/pr-13122-changed-1763759617340.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
-Move Action column to the 2nd position in the Firewall Rules Table ([#13122](https://github.com/linode/manager/pull/13122))
diff --git a/packages/manager/.changeset/pr-13122-upcoming-features-1763759704504.md b/packages/manager/.changeset/pr-13122-upcoming-features-1763759704504.md
deleted file mode 100644
index e05470547d8..00000000000
--- a/packages/manager/.changeset/pr-13122-upcoming-features-1763759704504.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add `generateAddressesLabelV2` utility to support PrefixLists ([#13122](https://github.com/linode/manager/pull/13122))
diff --git a/packages/manager/.changeset/pr-13123-upcoming-features-1763724960594.md b/packages/manager/.changeset/pr-13123-upcoming-features-1763724960594.md
deleted file mode 100644
index 718a57bd746..00000000000
--- a/packages/manager/.changeset/pr-13123-upcoming-features-1763724960594.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Implement Listeners Table in Network LoadBalancer Detail page ([#13123](https://github.com/linode/manager/pull/13123))
diff --git a/packages/manager/.changeset/pr-13124-changed-1763726824931.md b/packages/manager/.changeset/pr-13124-changed-1763726824931.md
deleted file mode 100644
index 6e3faa3a17b..00000000000
--- a/packages/manager/.changeset/pr-13124-changed-1763726824931.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
-Await permissions before rendering Linode Detail Header ([#13124](https://github.com/linode/manager/pull/13124))
diff --git a/packages/manager/.changeset/pr-13125-upcoming-features-1763760083439.md b/packages/manager/.changeset/pr-13125-upcoming-features-1763760083439.md
deleted file mode 100644
index aab9ee71357..00000000000
--- a/packages/manager/.changeset/pr-13125-upcoming-features-1763760083439.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Use new JSON-based fwRulesetsPrefixLists feature flag for Firewall RuleSets and Prefix Lists feature ([#13125](https://github.com/linode/manager/pull/13125))
diff --git a/packages/manager/.changeset/pr-13127-upcoming-features-1763979546789.md b/packages/manager/.changeset/pr-13127-upcoming-features-1763979546789.md
deleted file mode 100644
index 8ca707c6855..00000000000
--- a/packages/manager/.changeset/pr-13127-upcoming-features-1763979546789.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add support for additional status types and handle action menu accordingly in CloudPulse alerts ([#13127](https://github.com/linode/manager/pull/13127))
diff --git a/packages/manager/.changeset/pr-13129-fixed-1763987727502.md b/packages/manager/.changeset/pr-13129-fixed-1763987727502.md
deleted file mode 100644
index 91597d4e0b1..00000000000
--- a/packages/manager/.changeset/pr-13129-fixed-1763987727502.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-IAM: filtering by entity type at the Roles table ([#13129](https://github.com/linode/manager/pull/13129))
diff --git a/packages/manager/.changeset/pr-13130-upcoming-features-1763993150579.md b/packages/manager/.changeset/pr-13130-upcoming-features-1763993150579.md
deleted file mode 100644
index 6a8e6659ad0..00000000000
--- a/packages/manager/.changeset/pr-13130-upcoming-features-1763993150579.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add a Network Load Balancer Listener detail page (EntityDetail paper) with breadcrumbs ([#13130](https://github.com/linode/manager/pull/13130))
diff --git a/packages/manager/.changeset/pr-13131-changed-1763990723303.md b/packages/manager/.changeset/pr-13131-changed-1763990723303.md
deleted file mode 100644
index 50ac5d0e771..00000000000
--- a/packages/manager/.changeset/pr-13131-changed-1763990723303.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
-Legal sign off in Logs Streams Create Checkout bar ([#13131](https://github.com/linode/manager/pull/13131))
diff --git a/packages/manager/.changeset/pr-13132-upcoming-features-1764056438332.md b/packages/manager/.changeset/pr-13132-upcoming-features-1764056438332.md
deleted file mode 100644
index 5f5fea86ba1..00000000000
--- a/packages/manager/.changeset/pr-13132-upcoming-features-1764056438332.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
- Implement Empty Landing State for Network Load Balancers ([#13132](https://github.com/linode/manager/pull/13132))
diff --git a/packages/manager/.changeset/pr-13133-upcoming-features-1764084041956.md b/packages/manager/.changeset/pr-13133-upcoming-features-1764084041956.md
deleted file mode 100644
index 3f2f8c5bc68..00000000000
--- a/packages/manager/.changeset/pr-13133-upcoming-features-1764084041956.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-CloudPulse-Metrics: Update `FilterConfig.ts` to handle integration of endpoints dashboard for object-storage service in metrics page([#13133](https://github.com/linode/manager/pull/13133))
diff --git a/packages/manager/.changeset/pr-13134-upcoming-features-1764110309888.md b/packages/manager/.changeset/pr-13134-upcoming-features-1764110309888.md
deleted file mode 100644
index 7f7b3ff0afc..00000000000
--- a/packages/manager/.changeset/pr-13134-upcoming-features-1764110309888.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add feature flag support for PgBouncer in DBaaS ([#13134](https://github.com/linode/manager/pull/13134))
diff --git a/packages/manager/.changeset/pr-13135-changed-1764659811788.md b/packages/manager/.changeset/pr-13135-changed-1764659811788.md
deleted file mode 100644
index 4055f36aa11..00000000000
--- a/packages/manager/.changeset/pr-13135-changed-1764659811788.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
- Add Chip Support to Drawer Component Title ([#13135](https://github.com/linode/manager/pull/13135))
diff --git a/packages/manager/.changeset/pr-13137-upcoming-features-1764156818321.md b/packages/manager/.changeset/pr-13137-upcoming-features-1764156818321.md
deleted file mode 100644
index b21f0da7b01..00000000000
--- a/packages/manager/.changeset/pr-13137-upcoming-features-1764156818321.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-ACLP-Alerting: Update aclpAlerting flag to have beta marker control ([#13137](https://github.com/linode/manager/pull/13137))
diff --git a/packages/manager/.changeset/pr-13138-upcoming-features-1764681439890.md b/packages/manager/.changeset/pr-13138-upcoming-features-1764681439890.md
deleted file mode 100644
index 35a420a4964..00000000000
--- a/packages/manager/.changeset/pr-13138-upcoming-features-1764681439890.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Update Firewall Rules Edit & Add Drawer to Support Prefix List Selection ([#13138](https://github.com/linode/manager/pull/13138))
diff --git a/packages/manager/.changeset/pr-13139-fixed-1764247173880.md b/packages/manager/.changeset/pr-13139-fixed-1764247173880.md
deleted file mode 100644
index fb971eb3f3e..00000000000
--- a/packages/manager/.changeset/pr-13139-fixed-1764247173880.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-CloudPulse metrics volumes contextual view `not showing dimension values` and CloudPulse metrics `group by default selection retention` ([#13139](https://github.com/linode/manager/pull/13139))
diff --git a/packages/manager/.changeset/pr-13140-changed-1764317364992.md b/packages/manager/.changeset/pr-13140-changed-1764317364992.md
deleted file mode 100644
index c983c60cbca..00000000000
--- a/packages/manager/.changeset/pr-13140-changed-1764317364992.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
-Logs Delivery UI changes after review ([#13140](https://github.com/linode/manager/pull/13140))
diff --git a/packages/manager/.changeset/pr-13141-upcoming-features-1764311100780.md b/packages/manager/.changeset/pr-13141-upcoming-features-1764311100780.md
deleted file mode 100644
index c216c66363d..00000000000
--- a/packages/manager/.changeset/pr-13141-upcoming-features-1764311100780.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-CloudPulse-Metrics: Add tooltip for clusters filter in lke and fix preferences bug for nodebalancers filter in firewall-nodebalancer dashboard ([#13141](https://github.com/linode/manager/pull/13141))
diff --git a/packages/manager/.changeset/pr-13142-fixed-1764342267912.md b/packages/manager/.changeset/pr-13142-fixed-1764342267912.md
deleted file mode 100644
index 5cff2a9d457..00000000000
--- a/packages/manager/.changeset/pr-13142-fixed-1764342267912.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-IAM: disable/enable fields based on create_linode permission ([#13142](https://github.com/linode/manager/pull/13142))
diff --git a/packages/manager/.changeset/pr-13143-fixed-1764672257327.md b/packages/manager/.changeset/pr-13143-fixed-1764672257327.md
deleted file mode 100644
index d5cb5c3d6fd..00000000000
--- a/packages/manager/.changeset/pr-13143-fixed-1764672257327.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
- IAM Permissions performance improvements: Create from Backup & Clone ([#13143](https://github.com/linode/manager/pull/13143))
diff --git a/packages/manager/.changeset/pr-13146-upcoming-features-1764599840190.md b/packages/manager/.changeset/pr-13146-upcoming-features-1764599840190.md
deleted file mode 100644
index ebf9b5fe305..00000000000
--- a/packages/manager/.changeset/pr-13146-upcoming-features-1764599840190.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add and Integrate Prefix List Details Drawer ([#13146](https://github.com/linode/manager/pull/13146))
diff --git a/packages/manager/.changeset/pr-13147-upcoming-features-1764592604792.md b/packages/manager/.changeset/pr-13147-upcoming-features-1764592604792.md
deleted file mode 100644
index 460d9a7e704..00000000000
--- a/packages/manager/.changeset/pr-13147-upcoming-features-1764592604792.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Implement Nodes table in Network LoadBalancer Listener detail page ([#13147](https://github.com/linode/manager/pull/13147))
diff --git a/packages/manager/.changeset/pr-13153-fixed-1764672225221.md b/packages/manager/.changeset/pr-13153-fixed-1764672225221.md
deleted file mode 100644
index a3fcbd7ffb7..00000000000
--- a/packages/manager/.changeset/pr-13153-fixed-1764672225221.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-IAM Permissions performance improvements: Firewall entity assignment ([#13153](https://github.com/linode/manager/pull/13153))
diff --git a/packages/manager/.changeset/pr-13156-upcoming-features-1764708766786.md b/packages/manager/.changeset/pr-13156-upcoming-features-1764708766786.md
deleted file mode 100644
index 085d0c3dbda..00000000000
--- a/packages/manager/.changeset/pr-13156-upcoming-features-1764708766786.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Update useIsFirewallRulesetsPrefixlistsEnabled() to factor in account capability ([#13156](https://github.com/linode/manager/pull/13156))
diff --git a/packages/manager/.changeset/pr-13157-upcoming-features-1764741522593.md b/packages/manager/.changeset/pr-13157-upcoming-features-1764741522593.md
deleted file mode 100644
index f91b3a5d2f5..00000000000
--- a/packages/manager/.changeset/pr-13157-upcoming-features-1764741522593.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-CloudPulse-Metrics: Update tooltip msg for `Clusters` filter in LKE service dashboard ([#13157](https://github.com/linode/manager/pull/13157))
diff --git a/packages/manager/.changeset/pr-13158-upcoming-features-1764752133530.md b/packages/manager/.changeset/pr-13158-upcoming-features-1764752133530.md
deleted file mode 100644
index 5775b0813cf..00000000000
--- a/packages/manager/.changeset/pr-13158-upcoming-features-1764752133530.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Integrate Prefix List details drawer with Edit and Add Rule drawer ([#13158](https://github.com/linode/manager/pull/13158))
diff --git a/packages/manager/.changeset/pr-13164-upcoming-features-1764838771826.md b/packages/manager/.changeset/pr-13164-upcoming-features-1764838771826.md
deleted file mode 100644
index 8276febb6be..00000000000
--- a/packages/manager/.changeset/pr-13164-upcoming-features-1764838771826.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Add Beta/New feature Chip support for RuleSets and Prefix Lists ([#13164](https://github.com/linode/manager/pull/13164))
diff --git a/packages/manager/.changeset/pr-13165-upcoming-features-1764951969980.md b/packages/manager/.changeset/pr-13165-upcoming-features-1764951969980.md
deleted file mode 100644
index ae7b46a0c05..00000000000
--- a/packages/manager/.changeset/pr-13165-upcoming-features-1764951969980.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-UX/UI enhancements for RuleSets and Prefix Lists ([#13165](https://github.com/linode/manager/pull/13165))
diff --git a/packages/manager/.changeset/pr-13166-changed-1764854054943.md b/packages/manager/.changeset/pr-13166-changed-1764854054943.md
deleted file mode 100644
index b292049b2a3..00000000000
--- a/packages/manager/.changeset/pr-13166-changed-1764854054943.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Changed
----
-
-Logs: Many minor UI fixes and improvements ([#13166](https://github.com/linode/manager/pull/13166))
diff --git a/packages/manager/.changeset/pr-13168-fixed-1765192706974.md b/packages/manager/.changeset/pr-13168-fixed-1765192706974.md
deleted file mode 100644
index ddd0821e97b..00000000000
--- a/packages/manager/.changeset/pr-13168-fixed-1765192706974.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-EntitiesSelect performance on large accounts ([#13168](https://github.com/linode/manager/pull/13168))
diff --git a/packages/manager/.changeset/pr-13169-upcoming-features-1764884932241.md b/packages/manager/.changeset/pr-13169-upcoming-features-1764884932241.md
deleted file mode 100644
index c7d3a1b5e6f..00000000000
--- a/packages/manager/.changeset/pr-13169-upcoming-features-1764884932241.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Ensure a firewall can only reference a RuleSet once ([#13169](https://github.com/linode/manager/pull/13169))
diff --git a/packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md b/packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md
deleted file mode 100644
index 38a2c3a6fc3..00000000000
--- a/packages/manager/.changeset/pr-13172-upcoming-features-1764950932547.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Upcoming Features
----
-
-Handle special PLs in PrefixList drawer ([#13172](https://github.com/linode/manager/pull/13172))
diff --git a/packages/manager/.changeset/pr-13173-fixed-1764944067009.md b/packages/manager/.changeset/pr-13173-fixed-1764944067009.md
deleted file mode 100644
index 771b1923966..00000000000
--- a/packages/manager/.changeset/pr-13173-fixed-1764944067009.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-Optimize rendering of entities in AssignedRolesTable ([#13173](https://github.com/linode/manager/pull/13173))
diff --git a/packages/manager/.changeset/pr-13174-fixed-1764961648716.md b/packages/manager/.changeset/pr-13174-fixed-1764961648716.md
deleted file mode 100644
index 0deeb1ac90e..00000000000
--- a/packages/manager/.changeset/pr-13174-fixed-1764961648716.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Fixed
----
-
-Forking a Database Cluster with VPC into another region ([#13174](https://github.com/linode/manager/pull/13174))
diff --git a/packages/manager/.changeset/pr-13175-added-1765199020354.md b/packages/manager/.changeset/pr-13175-added-1765199020354.md
deleted file mode 100644
index 0dfe282277d..00000000000
--- a/packages/manager/.changeset/pr-13175-added-1765199020354.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/manager": Added
----
-
-IAM "New" and "Limited Availability" badges ([#13175](https://github.com/linode/manager/pull/13175))
diff --git a/packages/manager/CHANGELOG.md b/packages/manager/CHANGELOG.md
index dd5ff6f1a90..e8fabe978eb 100644
--- a/packages/manager/CHANGELOG.md
+++ b/packages/manager/CHANGELOG.md
@@ -4,6 +4,100 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
+## [2025-12-10] - v1.156.0
+
+
+### Added:
+
+- IAM Parent/Child: permissions switch account ([#13075](https://github.com/linode/manager/pull/13075))
+- Region select to Database Backups tab ([#13097](https://github.com/linode/manager/pull/13097))
+- IAM "New" and "Limited Availability" badges ([#13175](https://github.com/linode/manager/pull/13175))
+
+### Changed:
+
+- Update icon svg files to match with Akamai design system ([#13032](https://github.com/linode/manager/pull/13032))
+- IAM: fix permission check for detaching volumes ([#13099](https://github.com/linode/manager/pull/13099))
+- Move Action column to the 2nd position in the Firewall Rules Table ([#13122](https://github.com/linode/manager/pull/13122))
+- Await permissions before rendering Linode Detail Header ([#13124](https://github.com/linode/manager/pull/13124))
+- Legal sign off in Logs Streams Create Checkout bar ([#13131](https://github.com/linode/manager/pull/13131))
+- Add Chip Support to Drawer Component Title ([#13135](https://github.com/linode/manager/pull/13135))
+- Logs Delivery UI changes after review ([#13140](https://github.com/linode/manager/pull/13140))
+- Logs: Many minor UI fixes and improvements ([#13166](https://github.com/linode/manager/pull/13166))
+
+### Fixed:
+
+- Fix incorrect maintenance time display in the Upcoming maintenance table ([#13059](https://github.com/linode/manager/pull/13059))
+- IAM: the aria-label for the Users table action menu displays an incorrect username ([#13082](https://github.com/linode/manager/pull/13082))
+- Alignment with Linode row backup cell icon ([#13098](https://github.com/linode/manager/pull/13098))
+- Plans panel pagination bug fix ([#13100](https://github.com/linode/manager/pull/13100))
+- The `firewall_id` error on LKE pool update ([#13109](https://github.com/linode/manager/pull/13109))
+- Disabled Tab + Tooltip styles & accessibility ([#13113](https://github.com/linode/manager/pull/13113))
+- IAM: The StackScript/Linode selector is enabled in the Create Linode flow when the user doesn’t have the create_linode permission ([#13118](https://github.com/linode/manager/pull/13118))
+- DBaaS - Manage Networking VPC fields not handling error response ([#13121](https://github.com/linode/manager/pull/13121))
+- IAM: filtering by entity type at the Roles table ([#13129](https://github.com/linode/manager/pull/13129))
+- CloudPulse metrics volumes contextual view `not showing dimension values` and CloudPulse metrics `group by default selection retention` ([#13139](https://github.com/linode/manager/pull/13139))
+- IAM: disable/enable fields based on create_linode permission ([#13142](https://github.com/linode/manager/pull/13142))
+- IAM Permissions performance improvements: Create from Backup & Clone ([#13143](https://github.com/linode/manager/pull/13143))
+- IAM Permissions performance improvements: Firewall entity assignment ([#13153](https://github.com/linode/manager/pull/13153))
+- EntitiesSelect performance on large accounts ([#13168](https://github.com/linode/manager/pull/13168))
+- Optimize rendering of entities in AssignedRolesTable ([#13173](https://github.com/linode/manager/pull/13173))
+- Forking a Database Cluster with VPC into another region ([#13174](https://github.com/linode/manager/pull/13174))
+
+### Tech Stories:
+
+- DBaaS: Replace the dropdowns in Database cluster settings page with CDS select web component ([#13057](https://github.com/linode/manager/pull/13057))
+- Replace Formik with React Hook Form in MaintenanceWindow ([#13060](https://github.com/linode/manager/pull/13060))
+- Update Vite from `7.1.11` to `7.2.2` ([#13119](https://github.com/linode/manager/pull/13119))
+- Fix circular imports in CloudPulse ([#13119](https://github.com/linode/manager/pull/13119))
+- Update vitest from `v3` to `v4` ([#13119](https://github.com/linode/manager/pull/13119))
+
+### Tests:
+
+- Fix flakey vm-host test ([#13083](https://github.com/linode/manager/pull/13083))
+- Fixed various test failures when running tests against Prod environment ([#13107](https://github.com/linode/manager/pull/13107))
+
+### Upcoming Features:
+
+- Implement feature flag and routing for NLB ([#13068](https://github.com/linode/manager/pull/13068))
+- Add new Firewall RuleSet row layout ([#13079](https://github.com/linode/manager/pull/13079))
+- Disable premium plan tab if corresponding g7 dedicated plans are available ([#13081](https://github.com/linode/manager/pull/13081))
+- Object storage summary page migrated to use table view ([#13087](https://github.com/linode/manager/pull/13087))
+- Scaffolding setup for widget level dimension filters in cloudpulse metrics and group by issue fix in cloudpulse metrics ([#13088](https://github.com/linode/manager/pull/13088))
+- Integrate Firewall-nodebalancer support for ACLP-Alerting ([#13089](https://github.com/linode/manager/pull/13089))
+- Add tooltip for Rules column header in Firewall Rules table ([#13090](https://github.com/linode/manager/pull/13090))
+- CloudPulse-Metrics: Enhance `CloudPulseWidgetUtils.ts` to handle id to label conversion of linode associated with volume in volumes service ([#13092](https://github.com/linode/manager/pull/13092))
+- Implement Filtering for Plans table ([#13093](https://github.com/linode/manager/pull/13093))
+- Update Firewall Rule Drawer to support referencing Rule Set ([#13094](https://github.com/linode/manager/pull/13094))
+- Edit Stream form: remove cluster IDs from the edited stream that no longer exist or have log generation disabled ([#13095](https://github.com/linode/manager/pull/13095))
+- Implement mocks and factories for Network LoadBalancer ([#13104](https://github.com/linode/manager/pull/13104))
+- New Rule Set Details drawer with Marked for Deletion status ([#13108](https://github.com/linode/manager/pull/13108))
+- ACLP-Alerting: Filtering entities for firewall system alerts, add tooltip text to Entity Type component ([#13110](https://github.com/linode/manager/pull/13110))
+- CloudPulse-Metrics: Remove filtering of firewalls and region filter dependency on firewall-select in Firewalls ([#13111](https://github.com/linode/manager/pull/13111))
+- Add NetworkLoadBalancersLanding component to render NLB list with pagination, loading/error and table columns ([#13112](https://github.com/linode/manager/pull/13112))
+- Implement filter for GPU plans in plans panel ([#13115](https://github.com/linode/manager/pull/13115))
+- Add integration changes with `CloudPulseWidget` for widget level dimension support in CloudPulse metrics ([#13116](https://github.com/linode/manager/pull/13116))
+- Destination Form: fixes and improvements for Sample Destination Object Name ([#13117](https://github.com/linode/manager/pull/13117))
+- Add `generateAddressesLabelV2` utility to support PrefixLists ([#13122](https://github.com/linode/manager/pull/13122))
+- Implement Listeners Table in Network LoadBalancer Detail page ([#13123](https://github.com/linode/manager/pull/13123))
+- Use new JSON-based fwRulesetsPrefixLists feature flag for Firewall RuleSets and Prefix Lists feature ([#13125](https://github.com/linode/manager/pull/13125))
+- Add support for additional status types and handle action menu accordingly in CloudPulse alerts ([#13127](https://github.com/linode/manager/pull/13127))
+- Add a Network Load Balancer Listener detail page (EntityDetail paper) with breadcrumbs ([#13130](https://github.com/linode/manager/pull/13130))
+- Implement Empty Landing State for Network Load Balancers ([#13132](https://github.com/linode/manager/pull/13132))
+- CloudPulse-Metrics: Update `FilterConfig.ts` to handle integration of endpoints dashboard for object-storage service in metrics page([#13133](https://github.com/linode/manager/pull/13133))
+- Add feature flag support for PgBouncer in DBaaS ([#13134](https://github.com/linode/manager/pull/13134))
+- ACLP-Alerting: Update aclpAlerting flag to have beta marker control ([#13137](https://github.com/linode/manager/pull/13137))
+- Update Firewall Rules Edit & Add Drawer to Support Prefix List Selection ([#13138](https://github.com/linode/manager/pull/13138))
+- CloudPulse-Metrics: Add tooltip for clusters filter in lke and fix preferences bug for nodebalancers filter in firewall-nodebalancer dashboard ([#13141](https://github.com/linode/manager/pull/13141))
+- Add and Integrate Prefix List Details Drawer ([#13146](https://github.com/linode/manager/pull/13146))
+- Implement Nodes table in Network LoadBalancer Listener detail page ([#13147](https://github.com/linode/manager/pull/13147))
+- Update useIsFirewallRulesetsPrefixlistsEnabled() to factor in account capability ([#13156](https://github.com/linode/manager/pull/13156))
+- CloudPulse-Metrics: Update tooltip msg for `Clusters` filter in LKE service dashboard ([#13157](https://github.com/linode/manager/pull/13157))
+- Integrate Prefix List details drawer with Edit and Add Rule drawer ([#13158](https://github.com/linode/manager/pull/13158))
+- Add Beta/New feature Chip support for RuleSets and Prefix Lists ([#13164](https://github.com/linode/manager/pull/13164))
+- UX/UI enhancements for RuleSets and Prefix Lists ([#13165](https://github.com/linode/manager/pull/13165))
+- Ensure a firewall can only reference a RuleSet once ([#13169](https://github.com/linode/manager/pull/13169))
+- Handle special PLs in PrefixList drawer ([#13172](https://github.com/linode/manager/pull/13172))
+
## [2025-11-18] - v1.155.0
diff --git a/packages/manager/package.json b/packages/manager/package.json
index 7a78fd09062..90cce025425 100644
--- a/packages/manager/package.json
+++ b/packages/manager/package.json
@@ -2,7 +2,7 @@
"name": "linode-manager",
"author": "Linode",
"description": "The Linode Manager website",
- "version": "1.155.0",
+ "version": "1.156.0",
"private": true,
"type": "module",
"bugs": {
diff --git a/packages/queries/.changeset/pr-13078-upcoming-features-1762869790174.md b/packages/queries/.changeset/pr-13078-upcoming-features-1762869790174.md
deleted file mode 100644
index 6ad1e3662f2..00000000000
--- a/packages/queries/.changeset/pr-13078-upcoming-features-1762869790174.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/queries": Upcoming Features
----
-
-Add new queries for Network Load Balancers ([#13078](https://github.com/linode/manager/pull/13078))
diff --git a/packages/queries/.changeset/pr-13097-changed-1763149256983.md b/packages/queries/.changeset/pr-13097-changed-1763149256983.md
deleted file mode 100644
index 4797066c966..00000000000
--- a/packages/queries/.changeset/pr-13097-changed-1763149256983.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/queries": Changed
----
-
-Update database useRestoreFromBackupMutation data to include region ([#13097](https://github.com/linode/manager/pull/13097))
diff --git a/packages/queries/.changeset/pr-13148-upcoming-features-1764600420579.md b/packages/queries/.changeset/pr-13148-upcoming-features-1764600420579.md
deleted file mode 100644
index 782b19cc762..00000000000
--- a/packages/queries/.changeset/pr-13148-upcoming-features-1764600420579.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/queries": Upcoming Features
----
-
-Added Database Connection Pool queries ([#13148](https://github.com/linode/manager/pull/13148))
diff --git a/packages/queries/CHANGELOG.md b/packages/queries/CHANGELOG.md
index 7708246bd6e..93782eced0b 100644
--- a/packages/queries/CHANGELOG.md
+++ b/packages/queries/CHANGELOG.md
@@ -1,3 +1,15 @@
+## [2025-12-10] - v0.18.0
+
+
+### Changed:
+
+- Update database useRestoreFromBackupMutation data to include region ([#13097](https://github.com/linode/manager/pull/13097))
+
+### Upcoming Features:
+
+- Add new queries for Network Load Balancers ([#13078](https://github.com/linode/manager/pull/13078))
+- Added Database Connection Pool queries ([#13148](https://github.com/linode/manager/pull/13148))
+
## [2025-11-18] - v0.17.0
diff --git a/packages/queries/package.json b/packages/queries/package.json
index 930facd44bc..495e18c688f 100644
--- a/packages/queries/package.json
+++ b/packages/queries/package.json
@@ -1,6 +1,6 @@
{
"name": "@linode/queries",
- "version": "0.17.0",
+ "version": "0.18.0",
"description": "Linode Utility functions library",
"main": "src/index.js",
"module": "src/index.ts",
diff --git a/packages/utilities/.changeset/pr-13119-tech-stories-1764007518381.md b/packages/utilities/.changeset/pr-13119-tech-stories-1764007518381.md
deleted file mode 100644
index 00ff19841a8..00000000000
--- a/packages/utilities/.changeset/pr-13119-tech-stories-1764007518381.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/utilities": Tech Stories
----
-
-Update `scrollErrorIntoViewV2.test.tsx‎` to not mock MutationObserver` ([#13119](https://github.com/linode/manager/pull/13119))
diff --git a/packages/utilities/CHANGELOG.md b/packages/utilities/CHANGELOG.md
index 1aeae7b42c4..f6af6d75885 100644
--- a/packages/utilities/CHANGELOG.md
+++ b/packages/utilities/CHANGELOG.md
@@ -1,3 +1,10 @@
+## [2025-12-10] - v0.13.0
+
+
+### Tech Stories:
+
+- Update `scrollErrorIntoViewV2.test.tsx‎` to not mock MutationObserver` ([#13119](https://github.com/linode/manager/pull/13119))
+
## [2025-11-18] - v0.12.0
diff --git a/packages/utilities/package.json b/packages/utilities/package.json
index c4539523877..f69d7df796a 100644
--- a/packages/utilities/package.json
+++ b/packages/utilities/package.json
@@ -1,6 +1,6 @@
{
"name": "@linode/utilities",
- "version": "0.12.0",
+ "version": "0.13.0",
"description": "Linode Utility functions library",
"main": "src/index.ts",
"module": "src/index.ts",
diff --git a/packages/validation/.changeset/pr-13079-upcoming-features-1762861891552.md b/packages/validation/.changeset/pr-13079-upcoming-features-1762861891552.md
deleted file mode 100644
index 419f08d8ecf..00000000000
--- a/packages/validation/.changeset/pr-13079-upcoming-features-1762861891552.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/validation": Upcoming Features
----
-
-Update FirewallRuleTypeSchema to support ruleset ([#13079](https://github.com/linode/manager/pull/13079))
diff --git a/packages/validation/.changeset/pr-13148-upcoming-features-1764600446107.md b/packages/validation/.changeset/pr-13148-upcoming-features-1764600446107.md
deleted file mode 100644
index 0e428fea296..00000000000
--- a/packages/validation/.changeset/pr-13148-upcoming-features-1764600446107.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/validation": Upcoming Features
----
-
-Added Database Connection Pool schemas ([#13148](https://github.com/linode/manager/pull/13148))
diff --git a/packages/validation/.changeset/pr-13166-changed-1764854111433.md b/packages/validation/.changeset/pr-13166-changed-1764854111433.md
deleted file mode 100644
index a4e04eb3b87..00000000000
--- a/packages/validation/.changeset/pr-13166-changed-1764854111433.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@linode/validation": Changed
----
-
-Validate Bucket name in Destination Form for forbidden characters ([#13166](https://github.com/linode/manager/pull/13166))
diff --git a/packages/validation/CHANGELOG.md b/packages/validation/CHANGELOG.md
index 176d6748a14..7fa6a7853a5 100644
--- a/packages/validation/CHANGELOG.md
+++ b/packages/validation/CHANGELOG.md
@@ -1,3 +1,15 @@
+## [2025-12-10] - v0.79.0
+
+
+### Changed:
+
+- Validate Bucket name in Destination Form for forbidden characters ([#13166](https://github.com/linode/manager/pull/13166))
+
+### Upcoming Features:
+
+- Update FirewallRuleTypeSchema to support ruleset ([#13079](https://github.com/linode/manager/pull/13079))
+- Added Database Connection Pool schemas ([#13148](https://github.com/linode/manager/pull/13148))
+
## [2025-11-04] - v0.78.0
### Upcoming Features:
diff --git a/packages/validation/package.json b/packages/validation/package.json
index 07ae8252d08..6b44f758c62 100644
--- a/packages/validation/package.json
+++ b/packages/validation/package.json
@@ -1,6 +1,6 @@
{
"name": "@linode/validation",
- "version": "0.78.0",
+ "version": "0.79.0",
"description": "Yup validation schemas for use with the Linode APIv4",
"type": "module",
"main": "lib/index.cjs",
From f518c22825138d996c7726f5f6c5675d07d1fb77 Mon Sep 17 00:00:00 2001
From: Alban Bailly
Date: Mon, 8 Dec 2025 20:14:28 +0100
Subject: [PATCH 91/91] update changelog dates
---
packages/api-v4/CHANGELOG.md | 2 +-
packages/manager/CHANGELOG.md | 2 +-
packages/queries/CHANGELOG.md | 2 +-
packages/utilities/CHANGELOG.md | 2 +-
packages/validation/CHANGELOG.md | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/packages/api-v4/CHANGELOG.md b/packages/api-v4/CHANGELOG.md
index 8fd23ca90a8..ba68e404cca 100644
--- a/packages/api-v4/CHANGELOG.md
+++ b/packages/api-v4/CHANGELOG.md
@@ -1,4 +1,4 @@
-## [2025-12-10] - v0.154.0
+## [2025-12-09] - v0.154.0
### Changed:
diff --git a/packages/manager/CHANGELOG.md b/packages/manager/CHANGELOG.md
index e8fabe978eb..efe48704bd1 100644
--- a/packages/manager/CHANGELOG.md
+++ b/packages/manager/CHANGELOG.md
@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
-## [2025-12-10] - v1.156.0
+## [2025-12-09] - v1.156.0
### Added:
diff --git a/packages/queries/CHANGELOG.md b/packages/queries/CHANGELOG.md
index 93782eced0b..ac10cd07909 100644
--- a/packages/queries/CHANGELOG.md
+++ b/packages/queries/CHANGELOG.md
@@ -1,4 +1,4 @@
-## [2025-12-10] - v0.18.0
+## [2025-12-09] - v0.18.0
### Changed:
diff --git a/packages/utilities/CHANGELOG.md b/packages/utilities/CHANGELOG.md
index f6af6d75885..3b586437871 100644
--- a/packages/utilities/CHANGELOG.md
+++ b/packages/utilities/CHANGELOG.md
@@ -1,4 +1,4 @@
-## [2025-12-10] - v0.13.0
+## [2025-12-09] - v0.13.0
### Tech Stories:
diff --git a/packages/validation/CHANGELOG.md b/packages/validation/CHANGELOG.md
index 7fa6a7853a5..5c9b653355e 100644
--- a/packages/validation/CHANGELOG.md
+++ b/packages/validation/CHANGELOG.md
@@ -1,4 +1,4 @@
-## [2025-12-10] - v0.79.0
+## [2025-12-09] - v0.79.0
### Changed: