diff --git a/packages/desktop-client/e2e/page-models/settings-page.js b/packages/desktop-client/e2e/page-models/settings-page.js index dcf838cea5b..110dca4665d 100644 --- a/packages/desktop-client/e2e/page-models/settings-page.js +++ b/packages/desktop-client/e2e/page-models/settings-page.js @@ -8,27 +8,10 @@ export class SettingsPage { } async useBudgetType(budgetType) { - await this.enableExperimentalFeature('Budget mode toggle'); - const switchBudgetTypeButton = this.page.getByRole('button', { name: `Switch to ${budgetType} budgeting`, }); await switchBudgetTypeButton.click(); } - - async enableExperimentalFeature(featureName) { - const advancedSettingsButton = this.page.getByTestId('advanced-settings'); - await advancedSettingsButton.click(); - - const experimentalSettingsButton = this.page.getByTestId( - 'experimental-settings', - ); - await experimentalSettingsButton.click(); - - const featureCheckbox = this.page.getByRole('checkbox', { - name: featureName, - }); - await featureCheckbox.click(); - } } diff --git a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-1-chromium-linux.png b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-1-chromium-linux.png index b97876c75fb..4c86c135f63 100644 Binary files a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-1-chromium-linux.png and b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-1-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-2-chromium-linux.png b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-2-chromium-linux.png index 1ddcee49cc5..da91ec0a42e 100644 Binary files a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-2-chromium-linux.png and b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-2-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-3-chromium-linux.png b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-3-chromium-linux.png index e3b70167236..f6dea23498d 100644 Binary files a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-3-chromium-linux.png and b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-3-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-4-chromium-linux.png b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-4-chromium-linux.png index 0f3a4799e2d..d8f0b77169d 100644 Binary files a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-4-chromium-linux.png and b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-4-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-5-chromium-linux.png b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-5-chromium-linux.png index 58c44784a1c..85d5c95b923 100644 Binary files a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-5-chromium-linux.png and b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-5-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-6-chromium-linux.png b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-6-chromium-linux.png index e744a892d65..ea297f12c65 100644 Binary files a/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-6-chromium-linux.png and b/packages/desktop-client/e2e/settings.mobile.test.js-snapshots/Mobile-Settings-checks-that-settings-page-can-be-opened-6-chromium-linux.png differ diff --git a/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx b/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx index 4544517d3da..b40f2bf1c51 100644 --- a/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx +++ b/packages/desktop-client/src/components/mobile/MobileNavTabs.tsx @@ -1,6 +1,6 @@ -// @ts-strict-ignore import React, { useCallback, + type ComponentProps, type ComponentType, type CSSProperties, } from 'react'; @@ -43,6 +43,43 @@ export function MobileNavTabs() { padding: 10, }; + const [{ y }, api] = useSpring(() => ({ y: OPEN_DEFAULT_Y })); + + const openFull = useCallback( + ({ canceled }: { canceled?: boolean }) => { + // when cancel is true, it means that the user passed the upwards threshold + // so we change the spring config to create a nice wobbly effect + api.start({ + y: OPEN_FULL_Y, + immediate: false, + config: canceled ? config.wobbly : config.stiff, + }); + }, + [api, OPEN_FULL_Y], + ); + + const openDefault = useCallback( + (velocity = 0) => { + api.start({ + y: OPEN_DEFAULT_Y, + immediate: false, + config: { ...config.stiff, velocity }, + }); + }, + [api, OPEN_DEFAULT_Y], + ); + + const hide = useCallback( + (velocity = 0) => { + api.start({ + y: HIDDEN_Y, + immediate: false, + config: { ...config.stiff, velocity }, + }); + }, + [api, HIDDEN_Y], + ); + const navTabs = [ { name: 'Budget', @@ -92,50 +129,15 @@ export function MobileNavTabs() { style: navTabStyle, Icon: SvgCog, }, - ].map(tab => ); + ].map(tab => ( + openDefault()} {...tab} /> + )); const bufferTabsCount = COLUMN_COUNT - (navTabs.length % COLUMN_COUNT); const bufferTabs = Array.from({ length: bufferTabsCount }).map((_, idx) => (
)); - const [{ y }, api] = useSpring(() => ({ y: OPEN_DEFAULT_Y })); - - const openFull = useCallback( - ({ canceled }) => { - // when cancel is true, it means that the user passed the upwards threshold - // so we change the spring config to create a nice wobbly effect - api.start({ - y: OPEN_FULL_Y, - immediate: false, - config: canceled ? config.wobbly : config.stiff, - }); - }, - [api, OPEN_FULL_Y], - ); - - const openDefault = useCallback( - (velocity = 0) => { - api.start({ - y: OPEN_DEFAULT_Y, - immediate: false, - config: { ...config.stiff, velocity }, - }); - }, - [api, OPEN_DEFAULT_Y], - ); - - const hide = useCallback( - (velocity = 0) => { - api.start({ - y: HIDDEN_Y, - immediate: false, - config: { ...config.stiff, velocity }, - }); - }, - [api, HIDDEN_Y], - ); - useScrollListener(({ isScrolling }) => { if (isScrolling('down')) { hide(); @@ -237,9 +239,10 @@ type NavTabProps = { path: string; Icon: ComponentType; style?: CSSProperties; + onClick: ComponentProps['onClick']; }; -function NavTab({ Icon: TabIcon, name, path, style }: NavTabProps) { +function NavTab({ Icon: TabIcon, name, path, style, onClick }: NavTabProps) { return ( {name} diff --git a/packages/desktop-client/src/components/settings/Experimental.tsx b/packages/desktop-client/src/components/settings/Experimental.tsx index d60e50b844b..b4396689a3f 100644 --- a/packages/desktop-client/src/components/settings/Experimental.tsx +++ b/packages/desktop-client/src/components/settings/Experimental.tsx @@ -1,5 +1,5 @@ import { type ReactNode, useState } from 'react'; -import { Trans, useTranslation } from 'react-i18next'; +import { Trans } from 'react-i18next'; import type { FeatureFlag } from 'loot-core/src/types/prefs'; @@ -67,23 +67,6 @@ function FeatureToggle({ ); } -function TrackingBudgetFeature() { - const { t } = useTranslation(); - const [budgetType = 'rollover'] = useSyncedPref('budgetType'); - const enabled = useFeatureFlag('reportBudget'); - const blockToggleOff = budgetType === 'report' && enabled; - return ( - - Budget mode toggle - - ); -} - export function ExperimentalFeatures() { const [expanded, setExpanded] = useState(false); @@ -92,8 +75,6 @@ export function ExperimentalFeatures() { primaryAction={ expanded ? ( - - Goal templates diff --git a/packages/desktop-client/src/components/settings/index.tsx b/packages/desktop-client/src/components/settings/index.tsx index 28239f3360e..4a7852e12b0 100644 --- a/packages/desktop-client/src/components/settings/index.tsx +++ b/packages/desktop-client/src/components/settings/index.tsx @@ -7,7 +7,6 @@ import { isElectron } from 'loot-core/shared/environment'; import { listen } from 'loot-core/src/platform/client/fetch'; import { useActions } from '../../hooks/useActions'; -import { useFeatureFlag } from '../../hooks/useFeatureFlag'; import { useGlobalPref } from '../../hooks/useGlobalPref'; import { useIsOutdated, useLatestVersion } from '../../hooks/useLatestVersion'; import { useMetadataPref } from '../../hooks/useMetadataPref'; @@ -177,7 +176,7 @@ export function Settings() { - {useFeatureFlag('reportBudget') && } + {isElectron() && } diff --git a/packages/desktop-client/src/hooks/useFeatureFlag.ts b/packages/desktop-client/src/hooks/useFeatureFlag.ts index 062a54cd6d8..e5702740257 100644 --- a/packages/desktop-client/src/hooks/useFeatureFlag.ts +++ b/packages/desktop-client/src/hooks/useFeatureFlag.ts @@ -3,7 +3,6 @@ import type { FeatureFlag } from 'loot-core/src/types/prefs'; import { useSyncedPref } from './useSyncedPref'; const DEFAULT_FEATURE_FLAG_STATE: Record = { - reportBudget: false, goalTemplatesEnabled: false, dashboards: false, actionTemplating: false, diff --git a/packages/loot-core/src/types/prefs.d.ts b/packages/loot-core/src/types/prefs.d.ts index 0c6f7ea498d..ba1e5424920 100644 --- a/packages/loot-core/src/types/prefs.d.ts +++ b/packages/loot-core/src/types/prefs.d.ts @@ -1,6 +1,5 @@ export type FeatureFlag = | 'dashboards' - | 'reportBudget' | 'goalTemplatesEnabled' | 'actionTemplating' | 'upcomingLengthAdjustment' diff --git a/upcoming-release-notes/3833.md b/upcoming-release-notes/3833.md new file mode 100644 index 00000000000..49ef283f9bb --- /dev/null +++ b/upcoming-release-notes/3833.md @@ -0,0 +1,6 @@ +--- +category: Features +authors: [MatissJanis] +--- + +Release tracking budget feature.