Skip to content

Commit

Permalink
Merge branch 'master' into server-payees-handlers
Browse files Browse the repository at this point in the history
  • Loading branch information
matt-fidd authored Mar 1, 2025
2 parents a76ed97 + b0deedb commit 1e57e8d
Show file tree
Hide file tree
Showing 298 changed files with 120 additions and 485 deletions.
6 changes: 5 additions & 1 deletion .github/actions/bump-package-versions
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
#!/bin/bash
set -euo pipefail

version="${1#v}"
if [ "$#" -gt 0 ]; then
version="${1#v}"
else
version=""
fi

files_to_bump=(
packages/api/package.json
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/docker-edge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ env:
IMAGES: |
actualbudget/actual-server
ghcr.io/actualbudget/actual-server
ghcr.io/actualbudget/actual
# Creates the following tags:
# - actual-server:edge
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/docker-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ env:
IMAGES: |
actualbudget/actual-server
ghcr.io/actualbudget/actual-server
ghcr.io/actualbudget/actual
# Creates the following tags:
# - actual-server:latest (see docker/metadata-action flavor inputs, below)
Expand Down
2 changes: 1 addition & 1 deletion packages/api/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@actual-app/api",
"version": "25.2.1",
"version": "25.3.0",
"license": "MIT",
"description": "An API for Actual",
"engines": {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion packages/desktop-client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@actual-app/web",
"version": "25.2.1",
"version": "25.3.0",
"license": "MIT",
"files": [
"build"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ export function AccountsList({
}

return (
<View>
<View
style={{
minHeight: 'initial',
}}
>
{accounts.map(account => {
const hovered = hoveredAccount === account.id;

Expand Down
2 changes: 1 addition & 1 deletion packages/desktop-client/src/components/banksync/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ export function BankSync() {
)}
{Object.entries(groupedAccounts).map(([syncProvider, accounts]) => {
return (
<View key={syncProvider}>
<View key={syncProvider} style={{ minHeight: 'initial' }}>
{Object.keys(groupedAccounts).length > 1 && (
<Text
style={{ fontWeight: 500, fontSize: 20, margin: '.5em 0' }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
SvgWallet,
} from '../../icons/v1';
import { SvgReports } from '../../icons/v1/Reports';
import { SvgCalendar } from '../../icons/v2';
import { SvgCalendar3 } from '../../icons/v2';
import { theme } from '../../style';
import { useResponsive } from '../responsive/ResponsiveProvider';
import { useScrollListener } from '../ScrollProvider';
Expand Down Expand Up @@ -119,7 +119,7 @@ export function MobileNavTabs() {
name: t('Schedules (Soon)'),
path: '/schedules/soon',
style: navTabStyle,
Icon: SvgCalendar,
Icon: SvgCalendar3,
},
{
name: t('Payees (Soon)'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -789,6 +789,7 @@ const ExpenseGroupHeader = memo(function ExpenseGroupHeader({
showBudgetedCol,
collapsed,
onToggleCollapse,
style,
}) {
const opacity = blank ? 0 : 1;
const listItemRef = useRef();
Expand All @@ -814,9 +815,9 @@ const ExpenseGroupHeader = memo(function ExpenseGroupHeader({
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
backgroundColor: theme.tableRowHeaderBackground,
opacity: !!group.hidden ? 0.5 : undefined,
paddingLeft: 0,
...style,
}}
data-testid="category-group-row"
innerRef={listItemRef}
Expand Down Expand Up @@ -995,6 +996,7 @@ const IncomeGroupHeader = memo(function IncomeGroupHeader({
onEdit,
collapsed,
onToggleCollapse,
style,
}) {
const listItemRef = useRef();
const format = useFormat();
Expand All @@ -1007,9 +1009,9 @@ const IncomeGroupHeader = memo(function IncomeGroupHeader({
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
backgroundColor: theme.tableRowHeaderBackground,
opacity: !!group.hidden ? 0.5 : undefined,
paddingLeft: 0,
...style,
}}
innerRef={listItemRef}
data-testid="category-group-row"
Expand Down Expand Up @@ -1354,6 +1356,11 @@ const ExpenseGroup = memo(function ExpenseGroup({
collapsed={collapsed}
onToggleCollapse={onToggleCollapse}
// onReorderCategory={onReorderCategory}
style={{
backgroundColor: monthUtils.isCurrentMonth(month)
? theme.budgetHeaderCurrentMonth
: theme.budgetHeaderOtherMonth,
}}
/>

{group.categories
Expand Down Expand Up @@ -1400,7 +1407,9 @@ const ExpenseGroup = memo(function ExpenseGroup({
: envelopeBudget.catCarryover(category.id)
}
style={{
backgroundColor: theme.tableBackground,
backgroundColor: monthUtils.isCurrentMonth(month)
? theme.budgetCurrentMonth
: theme.budgetOtherMonth,
}}
showBudgetedCol={showBudgetedCol}
editMode={editMode}
Expand Down Expand Up @@ -1465,6 +1474,11 @@ function IncomeGroup({
onEdit={onEditGroup}
collapsed={collapsed}
onToggleCollapse={onToggleCollapse}
style={{
backgroundColor: monthUtils.isCurrentMonth(month)
? theme.budgetHeaderCurrentMonth
: theme.budgetHeaderOtherMonth,
}}
/>

{group.categories
Expand All @@ -1491,7 +1505,9 @@ function IncomeGroup({
: envelopeBudget.catSumAmount(category.id)
}
style={{
backgroundColor: theme.tableBackground,
backgroundColor: monthUtils.isCurrentMonth(month)
? theme.budgetCurrentMonth
: theme.budgetOtherMonth,
}}
editMode={editMode}
onEdit={onEditCategory}
Expand Down Expand Up @@ -1709,7 +1725,9 @@ export function BudgetTable({
aria-label={t('Today')}
style={{ margin: 10 }}
>
<SvgCalendar width={20} height={20} />
{!monthUtils.isCurrentMonth(month) && (
<SvgCalendar width={20} height={20} />
)}
</Button>
}
/>
Expand Down Expand Up @@ -1793,7 +1811,9 @@ function BudgetTableHeader({
flexShrink: 0,
padding: '10px 15px',
paddingLeft: 10,
backgroundColor: theme.tableRowHeaderBackground,
backgroundColor: monthUtils.isCurrentMonth(month)
? theme.budgetHeaderCurrentMonth
: theme.budgetHeaderOtherMonth,
borderBottomWidth: 1,
borderColor: theme.tableBorder,
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ export function Budget() {
);
} else {
dispatch(collapseModals('category-group-menu'));
dispatch(deleteGroup(groupId));
dispatch(deleteGroup({ id: groupId }));
}
},
[categoryGroups, dispatch],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import { usePayee } from '../../../hooks/usePayee';
import { SvgLeftArrow2, SvgRightArrow2, SvgSplit } from '../../../icons/v0';
import {
SvgArrowsSynchronize,
SvgCalendar,
SvgCalendar3,
SvgCheckCircle1,
SvgLockClosed,
} from '../../../icons/v2';
Expand Down Expand Up @@ -319,7 +319,7 @@ function PayeeIcons({ transaction, transferAccount }: PayeeIconsProps) {
(isScheduleRecurring ? (
<SvgArrowsSynchronize style={getScheduleIconStyle({ isPreview })} />
) : (
<SvgCalendar style={getScheduleIconStyle({ isPreview })} />
<SvgCalendar3 style={getScheduleIconStyle({ isPreview })} />
))}
{transferAccount &&
(transaction.amount > 0 ? (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -291,11 +291,9 @@ export function CreateAccountModal({ upgradingAccountId }: CreateAccountProps) {
<strong>
Link a <em>European</em> bank account
</strong>{' '}
to automatically download transactions.
</Trans>
<Trans>
GoCardless provides reliable, up-to-date information
from hundreds of banks.
to automatically download transactions. GoCardless
provides reliable, up-to-date information from
hundreds of banks.
</Trans>
</Text>
<View
Expand Down Expand Up @@ -356,11 +354,9 @@ export function CreateAccountModal({ upgradingAccountId }: CreateAccountProps) {
<strong>
Link a <em>North American</em> bank account
</strong>{' '}
to automatically download transactions.
</Trans>
<Trans>
SimpleFIN provides reliable, up-to-date information
from hundreds of banks.
to automatically download transactions. SimpleFIN
provides reliable, up-to-date information from
hundreds of banks.
</Trans>
</Text>
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { titleFirst } from 'loot-core/shared/util';

import {
SvgAlertTriangle,
SvgCalendar,
SvgCalendar3,
SvgCheckCircle1,
SvgCheckCircleHollow,
SvgEditSkull1,
Expand Down Expand Up @@ -38,7 +38,7 @@ export function getStatusProps(status: StatusTypes) {
return {
color: theme.upcomingText,
backgroundColor: theme.upcomingBackground,
Icon: SvgCalendar,
Icon: SvgCalendar3,
};
case 'paid':
return {
Expand All @@ -56,13 +56,13 @@ export function getStatusProps(status: StatusTypes) {
return {
color: theme.noticeTextLight,
backgroundColor: theme.noticeBackgroundLight,
Icon: SvgCalendar,
Icon: SvgCalendar3,
};
case 'scheduled':
return {
color: theme.tableRowHeaderText,
backgroundColor: theme.tableRowHeaderBackground,
Icon: SvgCalendar,
Icon: SvgCalendar3,
};
case 'cleared':
return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
SvgTuning,
SvgWallet,
} from '../../icons/v1';
import { SvgCalendar } from '../../icons/v2';
import { SvgCalendar3 } from '../../icons/v2';

import { Item } from './Item';
import { SecondaryItem } from './SecondaryItem';
Expand Down Expand Up @@ -47,7 +47,7 @@ export function PrimaryButtons() {
<View style={{ flexShrink: 0 }}>
<Item title={t('Budget')} Icon={SvgWallet} to="/budget" />
<Item title={t('Reports')} Icon={SvgReports} to="/reports" />
<Item title={t('Schedules')} Icon={SvgCalendar} to="/schedules" />
<Item title={t('Schedules')} Icon={SvgCalendar3} to="/schedules" />
<Item
title={t('More')}
Icon={isOpen ? SvgCheveronDown : SvgCheveronRight}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ export function TransactionList({

const onManagePayees = useCallback(
id => {
navigate('/payees', { state: { selectedPayee: id } });
navigate('/payees', id && { state: { selectedPayee: id } });
},
[navigate],
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ import { SvgLeftArrow2, SvgRightArrow2, SvgSplit } from '../../icons/v0';
import { SvgArrowDown, SvgArrowUp, SvgCheveronDown } from '../../icons/v1';
import {
SvgArrowsSynchronize,
SvgCalendar,
SvgCalendar3,
SvgHyperlink2,
} from '../../icons/v2';
import { useDispatch } from '../../redux';
Expand Down Expand Up @@ -742,7 +742,7 @@ function PayeeIcons({
{recurring ? (
<SvgArrowsSynchronize style={scheduleIconStyle} />
) : (
<SvgCalendar style={scheduleIconStyle} />
<SvgCalendar3 style={scheduleIconStyle} />
)}
</Button>
)}
Expand Down Expand Up @@ -1861,6 +1861,7 @@ function TransactionTableInner({
: trans.error;

const hasSplitError =
(trans.is_parent || trans.is_child) &&
(!expanded || isLastChild(transactions, index)) &&
error &&
error.type === 'SplitTransactionError';
Expand Down
12 changes: 6 additions & 6 deletions packages/desktop-client/src/i18n.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ describe('setI18NextLanguage', () => {
});

test('should fallback to English if the provided language is unavailable', () => {
vi.spyOn(console, 'error');
vi.spyOn(console, 'info');

setI18NextLanguage('unknown');

expect(console.error).toHaveBeenCalledWith(
expect(console.info).toHaveBeenCalledWith(
'Unknown locale unknown, falling back to en',
);
expect(i18n.changeLanguage).toHaveBeenCalledWith('en');
Expand All @@ -58,22 +58,22 @@ describe('setI18NextLanguage', () => {
});

test('should fallback to base language if the provided language has an unknown region code', () => {
vi.spyOn(console, 'error');
vi.spyOn(console, 'info');

setI18NextLanguage('uk-ZZ');

expect(console.error).toHaveBeenCalledWith(
expect(console.info).toHaveBeenCalledWith(
'Unknown locale uk-ZZ, falling back to uk',
);
expect(i18n.changeLanguage).toHaveBeenCalledWith('uk');
});

test('should fallback to lowercase language if the provided language has uppercase letters', () => {
vi.spyOn(console, 'error');
vi.spyOn(console, 'info');

setI18NextLanguage('EN');

expect(console.error).toHaveBeenCalledWith(
expect(console.info).toHaveBeenCalledWith(
'Unknown locale EN, falling back to en',
);
expect(i18n.changeLanguage).toHaveBeenCalledWith('en');
Expand Down
Loading

0 comments on commit 1e57e8d

Please sign in to comment.