From 60d039775459e95449ce50aed10e220d533e8b1c Mon Sep 17 00:00:00 2001 From: Jamie Ruderman Date: Thu, 23 Oct 2025 19:32:18 -0700 Subject: [PATCH 1/5] feat: hide billing/plans links in Android app using MobileUI wrapper --- .github/workflows/build-android.yml | 3 +- .../src/components/LicensingNoticeDisplay.tsx | 38 ++++++++++++++----- .../src/components/LicensingServiceNotice.tsx | 17 ++++++--- frontend/src/components/MobileUI.tsx | 4 +- frontend/src/components/PlanActionChip.tsx | 7 +++- frontend/src/components/UpgradeBanner.tsx | 9 +++-- frontend/src/components/UpgradeNotice.tsx | 13 ++++--- frontend/src/pages/CustomerPage.tsx | 9 +++-- frontend/src/pages/OrganizationAddPage.tsx | 15 ++++++-- frontend/src/pages/OrganizationRolesPage.tsx | 18 +++++---- 10 files changed, 90 insertions(+), 43 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 5de87cffa..eb8828cf4 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -129,9 +129,8 @@ jobs: packageName: com.remoteit releaseFiles: ./android/app/build/outputs/bundle/release/app-release.aab track: internal - status: inProgress + status: completed inAppUpdatePriority: 0 - userFraction: 0.2 changesNotSentForReview: true # whatsNewDirectory: distribution/whatsnew # mappingFile: app/build/outputs/mapping/release/mapping.txt diff --git a/frontend/src/components/LicensingNoticeDisplay.tsx b/frontend/src/components/LicensingNoticeDisplay.tsx index eb865ef3a..8b0cacfc9 100644 --- a/frontend/src/components/LicensingNoticeDisplay.tsx +++ b/frontend/src/components/LicensingNoticeDisplay.tsx @@ -8,6 +8,7 @@ import { Timestamp } from './Timestamp' import { Notice } from './Notice' import { Link } from './Link' import { Icon } from './Icon' +import { MobileUI } from './MobileUI' type Props = { noticeType: string @@ -29,11 +30,13 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s const UpgradeButton = ( <> - - - + + + + + @@ -49,7 +52,10 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} has expired. - Please upgrade your license. Learn more. + Please upgrade your license.{' '} + + Learn more. + ) @@ -59,7 +65,10 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} is past due. - Please update your payment method. Learn more. + Please update your payment method.{' '} + + Learn more. + ) @@ -70,7 +79,11 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} is incomplete. - Please update your payment information to continue service. + Please{' '} + + update your payment information + {' '} + to continue service. ) @@ -80,7 +93,10 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} has been canceled. - Please please check. Learn more. + Please please check.{' '} + + Learn more. + ) @@ -91,7 +107,9 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} You have exceeded your limit by {serviceLimit?.actual - serviceLimit?.value}.{' '} - Learn more. + + Learn more. + ) diff --git a/frontend/src/components/LicensingServiceNotice.tsx b/frontend/src/components/LicensingServiceNotice.tsx index 821842f63..b001fa642 100644 --- a/frontend/src/components/LicensingServiceNotice.tsx +++ b/frontend/src/components/LicensingServiceNotice.tsx @@ -6,6 +6,7 @@ import { useSelector } from 'react-redux' import { Button } from '@mui/material' import { Notice } from './Notice' import { Link } from './Link' +import { MobileUI } from './MobileUI' type Props = { device?: IDevice; license?: ILicense } @@ -25,17 +26,21 @@ export const LicensingServiceNotice: React.FC = props => { - - + + + + + } > {title} This service will be accessible for {humanizeDays(evaluationLimit?.value)}, unless you upgrade your license. - Learn more. + + Learn more. + ) diff --git a/frontend/src/components/MobileUI.tsx b/frontend/src/components/MobileUI.tsx index 29847e027..f6b081e71 100644 --- a/frontend/src/components/MobileUI.tsx +++ b/frontend/src/components/MobileUI.tsx @@ -13,8 +13,8 @@ type Props = { export const MobileUI: React.FC = ({ ios, android, hide, children }) => { let mobile = useMediaQuery(`(max-width:${MOBILE_WIDTH}px)`) - if (android) mobile = mobile && browser.isAndroid - if (ios) mobile = mobile && browser.isIOS + if (android) mobile = mobile || browser.isAndroid + if (ios) mobile = mobile || browser.isIOS if (hide) mobile = !mobile return mobile ? <>{children} : null diff --git a/frontend/src/components/PlanActionChip.tsx b/frontend/src/components/PlanActionChip.tsx index ad4d8ff34..fb4d3be9f 100644 --- a/frontend/src/components/PlanActionChip.tsx +++ b/frontend/src/components/PlanActionChip.tsx @@ -11,6 +11,7 @@ import { selectRemoteitLicense } from '../selectors/organizations' import { State } from '../store' import { ColorChip, Props as ChipProps } from './ColorChip' import { useHistory } from 'react-router-dom' +import { MobileUI } from './MobileUI' export const PlanActionChip: React.FC = ({ ...props }) => { const license = useSelector((state: State) => selectRemoteitLicense(state)) @@ -36,5 +37,9 @@ export const PlanActionChip: React.FC = ({ ...props }) => { return null } - return history.push('/account/plans')} /> + return ( + + history.push('/account/plans')} /> + + ) } diff --git a/frontend/src/components/UpgradeBanner.tsx b/frontend/src/components/UpgradeBanner.tsx index 8af7bc463..05850a2b3 100644 --- a/frontend/src/components/UpgradeBanner.tsx +++ b/frontend/src/components/UpgradeBanner.tsx @@ -6,6 +6,7 @@ import { useSelector } from 'react-redux' import { ColorChip } from './ColorChip' import { Notice } from './Notice' import { Box } from '@mui/material' +import { MobileUI } from './MobileUI' export const UpgradeBanner: React.FC = () => { const plan = useSelector(selectPlan) @@ -14,9 +15,11 @@ export const UpgradeBanner: React.FC = () => { Access premium features & support - - - + + + + + ) diff --git a/frontend/src/components/UpgradeNotice.tsx b/frontend/src/components/UpgradeNotice.tsx index 0ab6bd228..bbe7fb47e 100644 --- a/frontend/src/components/UpgradeNotice.tsx +++ b/frontend/src/components/UpgradeNotice.tsx @@ -7,6 +7,7 @@ import { selectLimits } from '../selectors/organizations' import { useSelector, useDispatch } from 'react-redux' import { State, Dispatch } from '../store' import { Pre } from './Pre' +import { MobileUI } from './MobileUI' const oneWeek = 1000 * 60 * 60 * 24 * 7 @@ -32,11 +33,13 @@ export const UpgradeNotice: React.FC> = () severity="warning" onClose={() => dispatch.ui.setPersistent({ updateNoticeCleared: Date.now() })} button={ - - - + + + + + } > {message} diff --git a/frontend/src/pages/CustomerPage.tsx b/frontend/src/pages/CustomerPage.tsx index c17cbef5a..b79ee8eaa 100644 --- a/frontend/src/pages/CustomerPage.tsx +++ b/frontend/src/pages/CustomerPage.tsx @@ -10,6 +10,7 @@ import { FormDisplay } from '../components/FormDisplay' import { Container } from '../components/Container' import { Avatar } from '../components/Avatar' import { Title } from '../components/Title' +import { MobileUI } from '../components/MobileUI' export const CustomerPage: React.FC = () => { const { userID = '' } = useParams<{ userID: string }>() @@ -44,9 +45,11 @@ export const CustomerPage: React.FC = () => { > License - + + + { const organization = useSelector(selectOrganization) @@ -74,9 +75,17 @@ export const OrganizationAddPage = () => { - - + + + + + } fullWidth > diff --git a/frontend/src/pages/OrganizationRolesPage.tsx b/frontend/src/pages/OrganizationRolesPage.tsx index bf612608c..330cdee0f 100644 --- a/frontend/src/pages/OrganizationRolesPage.tsx +++ b/frontend/src/pages/OrganizationRolesPage.tsx @@ -43,14 +43,16 @@ export const OrganizationRolesPage: React.FC = () => { {!limits.roles && ( Upgrade your plan to Business to add custom roles. - + + + )} From 211961c8ef6739f844fc2df77517b75dd7e6b6d9 Mon Sep 17 00:00:00 2001 From: Jamie Ruderman Date: Thu, 23 Oct 2025 19:33:03 -0700 Subject: [PATCH 2/5] 3.42.0 --- android/app/build.gradle | 4 ++-- electron/package-lock.json | 4 ++-- electron/package.json | 2 +- frontend/package.json | 2 +- ios/App/App.xcodeproj/project.pbxproj | 8 ++++---- package-lock.json | 8 ++++---- package.json | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index cfa62bf72..74fdfac5d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "com.remoteit" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 287 - versionName "3.41.0" + versionCode 288 + versionName "3.42.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/electron/package-lock.json b/electron/package-lock.json index f09e63539..7ae7a01b1 100644 --- a/electron/package-lock.json +++ b/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/electron/package.json b/electron/package.json index 4cc2d6ea5..64ea9f26b 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,6 +1,6 @@ { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.0", "private": true, "main": "build/index.js", "description": "Remote.It cross platform desktop application for creating and hosting connections", diff --git a/frontend/package.json b/frontend/package.json index 2fa79f95c..15caf2dca 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "remoteit-desktop-frontend", - "version": "3.41.0", + "version": "3.42.0", "private": true, "type": "module", "scripts": { diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 1f4ab7ed4..951175eff 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -352,7 +352,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 140; + CURRENT_PROJECT_VERSION = 141; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NR6A6NQAYW; INFOPLIST_FILE = App/Info.plist; @@ -360,7 +360,7 @@ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.41.0; + MARKETING_VERSION = 3.42.0; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.remoteit.mobile.ios; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -381,7 +381,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 140; + CURRENT_PROJECT_VERSION = 141; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NR6A6NQAYW; INFOPLIST_FILE = App/Info.plist; @@ -389,7 +389,7 @@ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.41.0; + MARKETING_VERSION = 3.42.0; PRODUCT_BUNDLE_IDENTIFIER = com.remoteit.mobile.ios; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/package-lock.json b/package-lock.json index 3e8aef2b5..76b08d737 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "remoteit-capacitor", - "version": "3.41.0", + "version": "3.42.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "remoteit-capacitor", - "version": "3.41.0", + "version": "3.42.0", "hasInstallScript": true, "workspaces": [ "electron", @@ -40,7 +40,7 @@ }, "electron": { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.0", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -164,7 +164,7 @@ }, "frontend": { "name": "remoteit-desktop-frontend", - "version": "3.41.0", + "version": "3.42.0", "dependencies": { "@airbrake/browser": "^2.1.9", "@aws-amplify/auth": "^5.6.6", diff --git a/package.json b/package.json index fa4c6c92d..6a433d5a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remoteit-capacitor", - "version": "3.41.0", + "version": "3.42.0", "private": true, "description": "Remote.It cross platform desktop application for creating and hosting connections", "workspaces": [ From 0af4bdd5da4f3de8bed347021c06619e3b76ad8e Mon Sep 17 00:00:00 2001 From: Jamie Ruderman Date: Thu, 23 Oct 2025 19:39:33 -0700 Subject: [PATCH 3/5] Duplicate word 'please' should be removed Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- frontend/src/components/LicensingNoticeDisplay.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/LicensingNoticeDisplay.tsx b/frontend/src/components/LicensingNoticeDisplay.tsx index 8b0cacfc9..f5e01b541 100644 --- a/frontend/src/components/LicensingNoticeDisplay.tsx +++ b/frontend/src/components/LicensingNoticeDisplay.tsx @@ -93,7 +93,7 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} has been canceled. - Please please check.{' '} + Please check.{' '} Learn more. From 74358d7bcdcf92d29a547462755d9aa899bfb03d Mon Sep 17 00:00:00 2001 From: Jamie Ruderman Date: Thu, 23 Oct 2025 23:59:48 -0700 Subject: [PATCH 4/5] feat: add BillingUI component to hide billing features on Android --- frontend/src/components/BillingUI.tsx | 10 +++++++ .../src/components/EventList/EventList.tsx | 6 ++--- .../src/components/LicensingNoticeDisplay.tsx | 26 +++++++++---------- .../src/components/LicensingServiceNotice.tsx | 10 +++---- frontend/src/components/MobileUI.tsx | 4 +-- frontend/src/components/PlanActionChip.tsx | 6 ++--- frontend/src/components/UpgradeBanner.tsx | 6 ++--- frontend/src/components/UpgradeNotice.tsx | 6 ++--- frontend/src/pages/AccountPage.tsx | 6 ++--- frontend/src/pages/CustomerPage.tsx | 6 ++--- frontend/src/pages/OrganizationAddPage.tsx | 6 ++--- frontend/src/pages/OrganizationRolesPage.tsx | 5 ++-- 12 files changed, 54 insertions(+), 43 deletions(-) create mode 100644 frontend/src/components/BillingUI.tsx diff --git a/frontend/src/components/BillingUI.tsx b/frontend/src/components/BillingUI.tsx new file mode 100644 index 000000000..c2185badc --- /dev/null +++ b/frontend/src/components/BillingUI.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import browser from '../services/browser' + +type Props = { + children?: React.ReactNode +} + +export const BillingUI: React.FC = ({ children }) => { + return browser.isAndroid ? null : <>{children} +} diff --git a/frontend/src/components/EventList/EventList.tsx b/frontend/src/components/EventList/EventList.tsx index 978472b4a..3e3fd108b 100644 --- a/frontend/src/components/EventList/EventList.tsx +++ b/frontend/src/components/EventList/EventList.tsx @@ -8,7 +8,7 @@ import { List, Box, Button, Typography } from '@mui/material' import { fontSizes, spacing } from '../../styling' import { humanizeDays, limitDays } from '../../models/plans' import { EventItem } from './EventItem' -import { MobileUI } from '../MobileUI' +import { BillingUI } from '../BillingUI' import { Notice } from '../Notice' export interface LogListProps { @@ -41,11 +41,11 @@ export const EventList: React.FC = ({ device }) => { + - + } > Plan upgrade required to view logs past {humanizeDays(logLimit?.value)}. diff --git a/frontend/src/components/LicensingNoticeDisplay.tsx b/frontend/src/components/LicensingNoticeDisplay.tsx index f5e01b541..1ee1a2c72 100644 --- a/frontend/src/components/LicensingNoticeDisplay.tsx +++ b/frontend/src/components/LicensingNoticeDisplay.tsx @@ -5,10 +5,10 @@ import { useDispatch, useSelector } from 'react-redux' import { PERSONAL_PLAN_ID } from '../models/plans' import { LicensingTitle } from './LicensingTitle' import { Timestamp } from './Timestamp' +import { BillingUI } from './BillingUI' import { Notice } from './Notice' import { Link } from './Link' import { Icon } from './Icon' -import { MobileUI } from './MobileUI' type Props = { noticeType: string @@ -30,13 +30,13 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s const UpgradeButton = ( <> - + - + @@ -53,9 +53,9 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} has expired. Please upgrade your license.{' '} - + Learn more. - + ) @@ -66,9 +66,9 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} is past due. Please update your payment method.{' '} - + Learn more. - + ) @@ -80,9 +80,9 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} is incomplete. Please{' '} - + update your payment information - {' '} + {' '} to continue service. @@ -94,9 +94,9 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} has been canceled. Please check.{' '} - + Learn more. - + ) @@ -107,9 +107,9 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} You have exceeded your limit by {serviceLimit?.actual - serviceLimit?.value}.{' '} - + Learn more. - + ) diff --git a/frontend/src/components/LicensingServiceNotice.tsx b/frontend/src/components/LicensingServiceNotice.tsx index b001fa642..61bc8f668 100644 --- a/frontend/src/components/LicensingServiceNotice.tsx +++ b/frontend/src/components/LicensingServiceNotice.tsx @@ -6,7 +6,7 @@ import { useSelector } from 'react-redux' import { Button } from '@mui/material' import { Notice } from './Notice' import { Link } from './Link' -import { MobileUI } from './MobileUI' +import { BillingUI } from './BillingUI' type Props = { device?: IDevice; license?: ILicense } @@ -26,21 +26,21 @@ export const LicensingServiceNotice: React.FC = props => { + - + } > {title} This service will be accessible for {humanizeDays(evaluationLimit?.value)}, unless you upgrade your license. - + Learn more. - + ) diff --git a/frontend/src/components/MobileUI.tsx b/frontend/src/components/MobileUI.tsx index f6b081e71..29847e027 100644 --- a/frontend/src/components/MobileUI.tsx +++ b/frontend/src/components/MobileUI.tsx @@ -13,8 +13,8 @@ type Props = { export const MobileUI: React.FC = ({ ios, android, hide, children }) => { let mobile = useMediaQuery(`(max-width:${MOBILE_WIDTH}px)`) - if (android) mobile = mobile || browser.isAndroid - if (ios) mobile = mobile || browser.isIOS + if (android) mobile = mobile && browser.isAndroid + if (ios) mobile = mobile && browser.isIOS if (hide) mobile = !mobile return mobile ? <>{children} : null diff --git a/frontend/src/components/PlanActionChip.tsx b/frontend/src/components/PlanActionChip.tsx index fb4d3be9f..1b88e7e63 100644 --- a/frontend/src/components/PlanActionChip.tsx +++ b/frontend/src/components/PlanActionChip.tsx @@ -11,7 +11,7 @@ import { selectRemoteitLicense } from '../selectors/organizations' import { State } from '../store' import { ColorChip, Props as ChipProps } from './ColorChip' import { useHistory } from 'react-router-dom' -import { MobileUI } from './MobileUI' +import { BillingUI } from './BillingUI' export const PlanActionChip: React.FC = ({ ...props }) => { const license = useSelector((state: State) => selectRemoteitLicense(state)) @@ -38,8 +38,8 @@ export const PlanActionChip: React.FC = ({ ...props }) => { } return ( - + history.push('/account/plans')} /> - + ) } diff --git a/frontend/src/components/UpgradeBanner.tsx b/frontend/src/components/UpgradeBanner.tsx index 05850a2b3..16be1c6ca 100644 --- a/frontend/src/components/UpgradeBanner.tsx +++ b/frontend/src/components/UpgradeBanner.tsx @@ -4,9 +4,9 @@ import { selectPlan } from '../selectors/organizations' import { PERSONAL_PLAN_ID } from '../models/plans' import { useSelector } from 'react-redux' import { ColorChip } from './ColorChip' +import { BillingUI } from './BillingUI' import { Notice } from './Notice' import { Box } from '@mui/material' -import { MobileUI } from './MobileUI' export const UpgradeBanner: React.FC = () => { const plan = useSelector(selectPlan) @@ -15,11 +15,11 @@ export const UpgradeBanner: React.FC = () => { Access premium features & support - + - + ) diff --git a/frontend/src/components/UpgradeNotice.tsx b/frontend/src/components/UpgradeNotice.tsx index bbe7fb47e..8f7d41f84 100644 --- a/frontend/src/components/UpgradeNotice.tsx +++ b/frontend/src/components/UpgradeNotice.tsx @@ -6,8 +6,8 @@ import { makeStyles } from '@mui/styles' import { selectLimits } from '../selectors/organizations' import { useSelector, useDispatch } from 'react-redux' import { State, Dispatch } from '../store' +import { BillingUI } from './BillingUI' import { Pre } from './Pre' -import { MobileUI } from './MobileUI' const oneWeek = 1000 * 60 * 60 * 24 * 7 @@ -33,13 +33,13 @@ export const UpgradeNotice: React.FC> = () severity="warning" onClose={() => dispatch.ui.setPersistent({ updateNoticeCleared: Date.now() })} button={ - + - + } > {message} diff --git a/frontend/src/pages/AccountPage.tsx b/frontend/src/pages/AccountPage.tsx index 71445c0a6..8fb1ce81c 100644 --- a/frontend/src/pages/AccountPage.tsx +++ b/frontend/src/pages/AccountPage.tsx @@ -4,7 +4,7 @@ import { List, Typography, Tooltip, ButtonBase } from '@mui/material' import { ListItemLocation } from '../components/ListItemLocation' import { windowOpen } from '../services/browser' import { Container } from '../components/Container' -import { MobileUI } from '../components/MobileUI' +import { BillingUI } from '../components/BillingUI' import { Logo } from '@common/brand/Logo' import { Icon } from '../components/Icon' @@ -34,14 +34,14 @@ export const AccountPage: React.FC = () => { dense /> - + {!browser.hasBilling && } {!browser.hasBilling && } - + diff --git a/frontend/src/pages/CustomerPage.tsx b/frontend/src/pages/CustomerPage.tsx index b79ee8eaa..495079b40 100644 --- a/frontend/src/pages/CustomerPage.tsx +++ b/frontend/src/pages/CustomerPage.tsx @@ -7,10 +7,10 @@ import { Typography, Button } from '@mui/material' import { LicensingSetting } from '../components/LicensingSetting' import { DeleteButton } from '../buttons/DeleteButton' import { FormDisplay } from '../components/FormDisplay' +import { BillingUI } from '../components/BillingUI' import { Container } from '../components/Container' import { Avatar } from '../components/Avatar' import { Title } from '../components/Title' -import { MobileUI } from '../components/MobileUI' export const CustomerPage: React.FC = () => { const { userID = '' } = useParams<{ userID: string }>() @@ -45,11 +45,11 @@ export const CustomerPage: React.FC = () => { > License - + - + { const organization = useSelector(selectOrganization) @@ -75,7 +75,7 @@ export const OrganizationAddPage = () => { + { label="Upgrade" /> - + } fullWidth > diff --git a/frontend/src/pages/OrganizationRolesPage.tsx b/frontend/src/pages/OrganizationRolesPage.tsx index 330cdee0f..dd92e81a7 100644 --- a/frontend/src/pages/OrganizationRolesPage.tsx +++ b/frontend/src/pages/OrganizationRolesPage.tsx @@ -8,6 +8,7 @@ import { useSelector } from 'react-redux' import { ListItemBack } from '../components/ListItemBack' import { IconButton } from '../buttons/IconButton' import { Container } from '../components/Container' +import { BillingUI } from '../components/BillingUI' import { MobileUI } from '../components/MobileUI' import { Notice } from '../components/Notice' import { Title } from '../components/Title' @@ -43,7 +44,7 @@ export const OrganizationRolesPage: React.FC = () => { {!limits.roles && ( Upgrade your plan to Business to add custom roles. - + - + )} From 556161917605667a301e8c34ecaa03d78fa6627a Mon Sep 17 00:00:00 2001 From: Jamie Ruderman Date: Fri, 24 Oct 2025 00:00:05 -0700 Subject: [PATCH 5/5] 3.42.1 --- android/app/build.gradle | 4 ++-- electron/package-lock.json | 4 ++-- electron/package.json | 2 +- frontend/package.json | 2 +- ios/App/App.xcodeproj/project.pbxproj | 8 ++++---- package-lock.json | 8 ++++---- package.json | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 74fdfac5d..2bf8dbf85 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "com.remoteit" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 288 - versionName "3.42.0" + versionCode 289 + versionName "3.42.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/electron/package-lock.json b/electron/package-lock.json index 7ae7a01b1..e043d6b96 100644 --- a/electron/package-lock.json +++ b/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "remoteit", - "version": "3.42.0", + "version": "3.42.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "remoteit", - "version": "3.42.0", + "version": "3.42.1", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/electron/package.json b/electron/package.json index 64ea9f26b..f5063cffe 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,6 +1,6 @@ { "name": "remoteit", - "version": "3.42.0", + "version": "3.42.1", "private": true, "main": "build/index.js", "description": "Remote.It cross platform desktop application for creating and hosting connections", diff --git a/frontend/package.json b/frontend/package.json index 15caf2dca..5da91864c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "remoteit-desktop-frontend", - "version": "3.42.0", + "version": "3.42.1", "private": true, "type": "module", "scripts": { diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 951175eff..3cf72fc76 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -352,7 +352,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 141; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NR6A6NQAYW; INFOPLIST_FILE = App/Info.plist; @@ -360,7 +360,7 @@ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.42.0; + MARKETING_VERSION = 3.42.1; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.remoteit.mobile.ios; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -381,7 +381,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 141; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NR6A6NQAYW; INFOPLIST_FILE = App/Info.plist; @@ -389,7 +389,7 @@ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.42.0; + MARKETING_VERSION = 3.42.1; PRODUCT_BUNDLE_IDENTIFIER = com.remoteit.mobile.ios; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/package-lock.json b/package-lock.json index 76b08d737..ac20693a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "remoteit-capacitor", - "version": "3.42.0", + "version": "3.42.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "remoteit-capacitor", - "version": "3.42.0", + "version": "3.42.1", "hasInstallScript": true, "workspaces": [ "electron", @@ -40,7 +40,7 @@ }, "electron": { "name": "remoteit", - "version": "3.42.0", + "version": "3.42.1", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -164,7 +164,7 @@ }, "frontend": { "name": "remoteit-desktop-frontend", - "version": "3.42.0", + "version": "3.42.1", "dependencies": { "@airbrake/browser": "^2.1.9", "@aws-amplify/auth": "^5.6.6", diff --git a/package.json b/package.json index 6a433d5a3..3d7fa02ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remoteit-capacitor", - "version": "3.42.0", + "version": "3.42.1", "private": true, "description": "Remote.It cross platform desktop application for creating and hosting connections", "workspaces": [