Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
6eea2d3
feat: add USDT0 launch banner and promo sheet to Home
CassioMG Aug 31, 2026
44bfe23
fix: use lg size for the Transfer USDT0 CTA
CassioMG Sep 1, 2026
efba48e
fix: match USDT0 sheet and banner typography to Figma
CassioMG Sep 1, 2026
ae98599
fix: add 20px side padding to the USDT0 sheet description
CassioMG Sep 1, 2026
57c97c7
chore: drop Figma reference comments from USDT0 styles
CassioMG Sep 1, 2026
7f72348
fix: win the cascade against SDS Text resets in USDT0 styles
CassioMG Sep 1, 2026
7622609
fix: keep SDS Text metrics, force only the description padding
CassioMG Sep 1, 2026
910927e
fix: flow USDT0 sheet content below the hero in tall viewports
CassioMG Sep 1, 2026
852975f
Merge branch 'master' into usdt0-launch-banner
CassioMG Sep 1, 2026
15e3dc7
fix: address Copilot a11y review on the USDT0 banner
CassioMG Sep 1, 2026
b06c12d
Merge remote-tracking branch 'origin/usdt0-launch-banner' into usdt0-…
CassioMG Sep 1, 2026
9547256
fix: localize USDT0 alt text and restore full-card click target
CassioMG Sep 1, 2026
3ce8068
fix: make the banner logo decorative for assistive tech
CassioMG Sep 1, 2026
ecc4862
feat: split the USDT0 sheet CTA into Receive and Bridge actions
CassioMG Sep 2, 2026
bda0c84
fix: restore 32px clearance above the USDT0 sheet footer
CassioMG Sep 2, 2026
61b4e50
fix: reuse the QR screen's BackButton for the USDT0 sheet close
CassioMG Sep 2, 2026
03fcd70
fix: match the USDT0 banner card metrics to Figma
CassioMG Sep 2, 2026
3912389
fix: restore the 32px clearance above Receive USDT0
CassioMG Sep 2, 2026
f87d8e2
fix: wrap "supported networks." together in the USDT0 feature copy
CassioMG Sep 2, 2026
0251c6a
fix: halve the vertical spacing around the Home USDT0 banner
CassioMG Sep 2, 2026
d41e076
fix: give the USDT0 sheet a vertical scroll path
CassioMG Sep 2, 2026
5e98bb8
Merge branch 'master' into usdt0-launch-banner
CassioMG Sep 2, 2026
5dd3913
feat: add the Swap to USDT0 action to the launch sheet
CassioMG Sep 2, 2026
a26d1d9
fix: fit all three USDT0 sheet actions in the 600px popup
CassioMG Sep 2, 2026
08f040f
fix: size the Transfer to Stellar action like the lg buttons above it
CassioMG Sep 2, 2026
a773c74
Merge branch 'master' into usdt0-launch-banner
CassioMG Sep 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions @shared/api/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2216,6 +2216,34 @@ export const getTokenIds = async ({
return tokenIdList;
};

export const getUsdt0LaunchBannerDismissed = async (): Promise<boolean> => {
const { isDismissed, error } = await sendMessageToBackground({
activePublicKey: null,
type: SERVICE_TYPES.GET_USDT0_LAUNCH_BANNER_DISMISSED,
});

if (error) {
return false;
}

return !!isDismissed;
};

export const dismissUsdt0LaunchBanner = async (): Promise<{
isDismissed: boolean;
}> => {
const { isDismissed, error } = await sendMessageToBackground({
activePublicKey: null,
type: SERVICE_TYPES.DISMISS_USDT0_LAUNCH_BANNER,
});

if (error) {
throw new Error(error);
}

return { isDismissed: !!isDismissed };
};

export const removeTokenId = async ({
activePublicKey,
contractId,
Expand Down
10 changes: 10 additions & 0 deletions @shared/api/types/message-request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,14 @@ export interface GetHiddenAssetsMessage extends BaseMessage {
type: SERVICE_TYPES.GET_HIDDEN_ASSETS;
}

export interface GetUsdt0LaunchBannerDismissedMessage extends BaseMessage {
type: SERVICE_TYPES.GET_USDT0_LAUNCH_BANNER_DISMISSED;
}

export interface DismissUsdt0LaunchBannerMessage extends BaseMessage {
type: SERVICE_TYPES.DISMISS_USDT0_LAUNCH_BANNER;
}

export interface GetRecentProtocolsMessage extends BaseMessage {
type: SERVICE_TYPES.GET_RECENT_PROTOCOLS;
}
Expand Down Expand Up @@ -565,6 +573,8 @@ export type ServiceMessageRequest =
| GetIsAccountMismatchMessage
| ChangeAssetVisibilityMessage
| GetHiddenAssetsMessage
| GetUsdt0LaunchBannerDismissedMessage
| DismissUsdt0LaunchBannerMessage
| GetRecentProtocolsMessage
| AddRecentProtocolMessage
| ClearRecentProtocolsMessage
Expand Down
2 changes: 2 additions & 0 deletions @shared/constants/services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ export enum SERVICE_TYPES {
CHANGE_ASSET_VISIBILITY = "CHANGE_ASSET_VISIBILITY",
GET_HIDDEN_ASSETS = "GET_HIDDEN_ASSETS",
GET_IS_ACCOUNT_MISMATCH = "GET_IS_ACCOUNT_MISMATCH",
GET_USDT0_LAUNCH_BANNER_DISMISSED = "GET_USDT0_LAUNCH_BANNER_DISMISSED",
DISMISS_USDT0_LAUNCH_BANNER = "DISMISS_USDT0_LAUNCH_BANNER",
GET_BLOCKAID_DEBUG_OVERRIDE = "GET_BLOCKAID_DEBUG_OVERRIDE",
SAVE_BLOCKAID_DEBUG_OVERRIDE = "SAVE_BLOCKAID_DEBUG_OVERRIDE",
ADD_COLLECTIBLE = "ADD_COLLECTIBLE",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { DataStorageAccess } from "background/helpers/dataStorageAccess";
import { USDT0_LAUNCH_BANNER_DISMISSED } from "constants/localStorageTypes";

export const dismissUsdt0LaunchBanner = async ({
localStore,
}: {
localStore: DataStorageAccess;
}): Promise<{ isDismissed: boolean }> => {
await localStore.setItem(USDT0_LAUNCH_BANNER_DISMISSED, true);
const isDismissed = await localStore.getItem(USDT0_LAUNCH_BANNER_DISMISSED);
return { isDismissed: !!isDismissed };
Comment on lines +10 to +11

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in #2999 (a30b52c) — the handler now returns { isDismissed: true } straight after setItem, matching dismissDiscoverWelcome. #2990 had already merged, hence the separate PR; also backported to #2997 for v5.48.0.

};
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { DataStorageAccess } from "background/helpers/dataStorageAccess";
import { USDT0_LAUNCH_BANNER_DISMISSED } from "constants/localStorageTypes";

export const getUsdt0LaunchBannerDismissed = async ({
localStore,
}: {
localStore: DataStorageAccess;
}): Promise<{ isDismissed: boolean }> => {
const dismissed = await localStore.getItem(USDT0_LAUNCH_BANNER_DISMISSED);
return { isDismissed: !!dismissed };
};
12 changes: 12 additions & 0 deletions extension/src/background/messageListener/popupMessageListener.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ import { modifyAssetsList } from "./handlers/modifyAssetsList";
import { getIsAccountMismatch } from "./handlers/getIsAccountMismatch";
import { changeAssetVisibility } from "./handlers/changeAssetVisibility";
import { getHiddenAssets } from "./handlers/getHiddenAssets";
import { getUsdt0LaunchBannerDismissed } from "./handlers/getUsdt0LaunchBannerDismissed";
import { dismissUsdt0LaunchBanner } from "./handlers/dismissUsdt0LaunchBanner";
import { loadBackendSettings } from "./handlers/loadBackendSettings";
import { saveBlockaidOverrideState } from "./handlers/saveDebugOverride";
import { getBlockaidOverrideState } from "./handlers/getDebugOverride";
Expand Down Expand Up @@ -579,6 +581,16 @@ export const popupMessageListener = (
localStore,
});
}
case SERVICE_TYPES.GET_USDT0_LAUNCH_BANNER_DISMISSED: {
return getUsdt0LaunchBannerDismissed({
localStore,
});
}
case SERVICE_TYPES.DISMISS_USDT0_LAUNCH_BANNER: {
return dismissUsdt0LaunchBanner({
localStore,
});
}
case SERVICE_TYPES.GET_BLOCKAID_DEBUG_OVERRIDE: {
return getBlockaidOverrideState({
localStore,
Expand Down
1 change: 1 addition & 0 deletions extension/src/constants/localStorageTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export const HIDDEN_ASSETS = "hiddenAssets";
export const HIDDEN_COLLECTIBLES = "hiddenCollectibles";
export const TEMPORARY_STORE_ID = "temporaryStore";
export const TEMPORARY_STORE_EXTRA_ID = "temporaryStoreExtra";
export const USDT0_LAUNCH_BANNER_DISMISSED = "usdt0LaunchBannerDismissed";
export const OVERRIDDEN_BLOCKAID_RESPONSE_ID = "overriddenBlockaidResponse";
export const COLLECTIBLES_ID = "collectibles";
export const IS_OPEN_SIDEBAR_BY_DEFAULT_ID = "isOpenSidebarByDefault";
Expand Down
Binary file added extension/src/popup/assets/logo-usdt0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions extension/src/popup/assets/usdt0-arcs.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions extension/src/popup/assets/usdt0-lockup.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import { signOut } from "popup/ducks/accountServices";
import { AccountHeaderModal } from "popup/components/account/AccountHeaderModal";
import { NetworkIcon } from "popup/components/manageNetwork/NetworkIcon";
import { NetworkDetails } from "@shared/constants/stellar";
import { Usdt0LaunchBanner } from "popup/components/account/Usdt0LaunchBanner";
import { AccountTabs } from "popup/components/account/AccountTabs";
import { MaintenanceBanner } from "popup/components/MaintenanceBanner";
import { getNetworkDisplayName } from "./getNetworkDisplayName";
Expand Down Expand Up @@ -416,6 +417,7 @@ export const AccountHeader = ({
</div>
</NavLink>
</div>
<Usdt0LaunchBanner />
{isBackgroundActive
? createPortal(
<LoadingBackground
Expand Down
Loading
Loading