Compare commits

...

4 Commits

Author SHA1 Message Date
Matiss Janis Aboltins
d8639a2a71 🔖 (24.2.0) cleared transaction improvements; experimental simplefin bank-sync (#2311) 2024-02-02 19:20:53 +00:00
Matiss Janis Aboltins
734191424b 🐛 (goCardless) patch incomplete migration (#2308) 2024-02-01 16:40:12 +00:00
shall0pass
5d4fcfde00 [Enhancement] Goal Target with cleanup template (#2282)
* update goal target after montly cleanup

* release note
2024-01-31 13:42:05 -06:00
Joel Jeremy Marquez
54d7e5460a [Cleanup] useSingleActiveEditForm hook on mobile budget table (#2263)
* useSingleActiveEditForm on mobile budget table

* Release notes

* Remove unused variables
2024-01-30 14:37:06 -08:00
91 changed files with 118 additions and 642 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@actual-app/api",
"version": "6.4.0",
"version": "6.5.0",
"license": "MIT",
"description": "An API for Actual",
"engines": {

View File

@@ -1,6 +1,6 @@
{
"name": "@actual-app/web",
"version": "24.1.0",
"version": "24.2.0",
"license": "MIT",
"files": [
"build"

View File

@@ -83,11 +83,14 @@ export function AccountHeader({
const [menuOpen, setMenuOpen] = useState(false);
const searchInput = useRef(null);
const splitsExpanded = useSplitsExpanded();
const syncServerStatus = useSyncServerStatus();
const isUsingServer = syncServerStatus !== 'no-server';
const isServerOffline = syncServerStatus === 'offline';
let canSync = account && account.account_id;
let canSync = account && account.account_id && isUsingServer;
if (!account) {
// All accounts - check for any syncable account
canSync = !!accounts.find(account => !!account.account_id);
canSync = !!accounts.find(account => !!account.account_id) && isUsingServer;
}
function onToggleSplits() {
@@ -210,7 +213,11 @@ export function AccountHeader({
style={{ marginTop: 12 }}
>
{((account && !account.closed) || canSync) && (
<Button type="bare" onClick={canSync ? onSync : onImport}>
<Button
type="bare"
onClick={canSync ? onSync : onImport}
disabled={canSync && isServerOffline}
>
{canSync ? (
<>
<AnimatedRefresh
@@ -222,7 +229,7 @@ export function AccountHeader({
}
style={{ marginRight: 4 }}
/>{' '}
Sync
{isServerOffline ? 'Sync offline' : 'Sync'}
</>
) : (
<>

View File

@@ -22,9 +22,6 @@ import { SyncRefresh } from '../SyncRefresh';
import { BudgetTable } from './MobileBudgetTable';
import { prewarmMonth, switchBudgetType } from './util';
const CATEGORY_BUDGET_EDIT_ACTION = 'category-budget';
const BALANCE_MENU_OPEN_ACTION = 'balance-menu';
type BudgetInnerProps = {
categories: CategoryEntity[];
categoryGroups: CategoryGroupEntity[];
@@ -76,8 +73,6 @@ function BudgetInner(props: BudgetInnerProps) {
const [currentMonth, setCurrentMonth] = useState(currMonth);
const [initialized, setInitialized] = useState(false);
const [editMode, setEditMode] = useState(false);
const [editingBudgetCategoryId, setEditingBudgetCategoryId] = useState(null);
const [openBalanceActionMenuId, setOpenBalanceActionMenuId] = useState(null);
useEffect(() => {
async function init() {
@@ -360,29 +355,6 @@ function BudgetInner(props: BudgetInnerProps) {
});
};
const onEditCategoryBudget = id => {
onEdit(CATEGORY_BUDGET_EDIT_ACTION, id);
};
const onOpenBalanceActionMenu = id => {
onEdit(BALANCE_MENU_OPEN_ACTION, id);
};
const onEdit = (action, id) => {
// Do not allow editing if another field is currently being edited.
// Cancel the currently editing field in that case.
const currentlyEditing = editingBudgetCategoryId || openBalanceActionMenuId;
setEditingBudgetCategoryId(
action === CATEGORY_BUDGET_EDIT_ACTION && !currentlyEditing ? id : null,
);
setOpenBalanceActionMenuId(
action === BALANCE_MENU_OPEN_ACTION && !currentlyEditing ? id : null,
);
return { action, editingId: !currentlyEditing ? id : null };
};
const numberFormat = prefs?.numberFormat || 'comma-dot';
const hideFraction = prefs?.hideFraction || false;
@@ -438,10 +410,6 @@ function BudgetInner(props: BudgetInnerProps) {
pushModal={pushModal}
onEditGroup={onEditGroup}
onEditCategory={onEditCategory}
editingBudgetCategoryId={editingBudgetCategoryId}
onEditCategoryBudget={onEditCategoryBudget}
openBalanceActionMenuId={openBalanceActionMenuId}
onOpenBalanceActionMenu={onOpenBalanceActionMenu}
/>
)}
</SyncRefresh>

View File

@@ -1,4 +1,4 @@
import React, { memo, useEffect, useRef, useState } from 'react';
import React, { memo, useRef, useState } from 'react';
import { useSelector } from 'react-redux';
import memoizeOne from 'memoize-one';
@@ -7,6 +7,10 @@ import { rolloverBudget, reportBudget } from 'loot-core/src/client/queries';
import * as monthUtils from 'loot-core/src/shared/months';
import { useFeatureFlag } from '../../hooks/useFeatureFlag';
import {
SingleActiveEditFormProvider,
useSingleActiveEditForm,
} from '../../hooks/useSingleActiveEditForm';
import {
SvgArrowThinLeft,
SvgArrowThinRight,
@@ -134,6 +138,7 @@ function BudgetCell({
month,
onBudgetAction,
onEdit,
onBlur,
isEditing,
}) {
const sheetValue = useSheetValue(binding);
@@ -146,7 +151,7 @@ function BudgetCell({
}
function onAmountClick() {
onEdit?.(categoryId);
onEdit?.();
}
return (
@@ -162,7 +167,7 @@ function BudgetCell({
focused={isEditing}
textStyle={{ ...styles.smallText, ...textStyle }}
onUpdate={updateBudgetAmount}
onBlur={() => onEdit?.(null)}
onBlur={onBlur}
/>
<View
role="button"
@@ -244,10 +249,6 @@ const ExpenseCategory = memo(function ExpenseCategory({
style,
month,
onEdit,
isEditingBudget,
onEditBudget,
isBalanceActionMenuOpen,
onOpenBalanceActionMenu,
onBudgetAction,
show3Cols,
showBudgetedCol,
@@ -255,11 +256,22 @@ const ExpenseCategory = memo(function ExpenseCategory({
const opacity = blank ? 0 : 1;
const balanceTooltip = useTooltip();
useEffect(() => {
if (isBalanceActionMenuOpen) {
const [isEditingBudget, setIsEditingBudget] = useState(false);
const { onRequestActiveEdit, onClearActiveEdit } = useSingleActiveEditForm();
const onEditBudget = () => {
onRequestActiveEdit(`${category.id}-budget`, () => {
setIsEditingBudget(true);
return () => setIsEditingBudget(false);
});
};
const onOpenBalanceActionMenu = () => {
onRequestActiveEdit(`${category.id}-balance`, () => {
balanceTooltip.open();
}
}, [isBalanceActionMenuOpen, balanceTooltip]);
return () => balanceTooltip.close();
});
};
const listItemRef = useRef();
@@ -317,6 +329,7 @@ const ExpenseCategory = memo(function ExpenseCategory({
onBudgetAction={onBudgetAction}
isEditing={isEditingBudget}
onEdit={onEditBudget}
onBlur={onClearActiveEdit}
/>
<View
style={{
@@ -349,7 +362,7 @@ const ExpenseCategory = memo(function ExpenseCategory({
>
<span
role="button"
onPointerUp={() => onOpenBalanceActionMenu?.(category.id)}
onPointerUp={() => onOpenBalanceActionMenu?.()}
onPointerDown={e => e.preventDefault()}
>
<BalanceWithCarryover
@@ -371,7 +384,7 @@ const ExpenseCategory = memo(function ExpenseCategory({
monthIndex={monthUtils.getMonthIndex(month)}
onBudgetAction={_onBudgetAction}
onClose={() => {
onOpenBalanceActionMenu?.(null);
onClearActiveEdit();
}}
/>
) : (
@@ -382,7 +395,7 @@ const ExpenseCategory = memo(function ExpenseCategory({
monthIndex={monthUtils.getMonthIndex(month)}
onBudgetAction={_onBudgetAction}
onClose={() => {
onOpenBalanceActionMenu?.(null);
onClearActiveEdit();
}}
/>
))}
@@ -795,10 +808,6 @@ const ExpenseGroup = memo(function ExpenseGroup({
editMode,
onEditGroup,
onEditCategory,
editingBudgetCategoryId,
onEditCategoryBudget,
openBalanceActionMenuId,
onOpenBalanceActionMenu,
// gestures,
month,
// onReorderCategory,
@@ -873,10 +882,6 @@ const ExpenseGroup = memo(function ExpenseGroup({
{group.categories
.filter(category => !category.hidden || showHiddenCategories)
.map((category, index) => {
const isEditingCategoryBudget =
editingBudgetCategoryId === category.id;
const isBalanceActionMenuOpen =
openBalanceActionMenuId === category.id;
return (
<ExpenseCategory
key={category.id}
@@ -915,10 +920,6 @@ const ExpenseGroup = memo(function ExpenseGroup({
showBudgetedCol={showBudgetedCol}
editMode={editMode}
onEdit={onEditCategory}
isEditingBudget={isEditingCategoryBudget}
onEditBudget={onEditCategoryBudget}
isBalanceActionMenuOpen={isBalanceActionMenuOpen}
onOpenBalanceActionMenu={onOpenBalanceActionMenu}
// gestures={gestures}
month={month}
// onReorder={onReorderCategory}
@@ -1019,10 +1020,6 @@ function BudgetGroups({
categoryGroups,
onEditGroup,
onEditCategory,
editingBudgetCategoryId,
onEditCategoryBudget,
openBalanceActionMenuId,
onOpenBalanceActionMenu,
editMode,
gestures,
month,
@@ -1048,71 +1045,67 @@ function BudgetGroups({
const { incomeGroup, expenseGroups } = separateGroups(categoryGroups);
return (
<View
data-testid="budget-groups"
style={{ flex: '1 0 auto', overflowY: 'auto', paddingBottom: 15 }}
>
{expenseGroups
.filter(group => !group.hidden || showHiddenCategories)
.map(group => {
return (
<ExpenseGroup
key={group.id}
type={type}
group={group}
showBudgetedCol={showBudgetedCol}
gestures={gestures}
month={month}
editMode={editMode}
onEditGroup={onEditGroup}
onEditCategory={onEditCategory}
editingBudgetCategoryId={editingBudgetCategoryId}
onEditCategoryBudget={onEditCategoryBudget}
openBalanceActionMenuId={openBalanceActionMenuId}
onOpenBalanceActionMenu={onOpenBalanceActionMenu}
onSaveCategory={onSaveCategory}
onDeleteCategory={onDeleteCategory}
onAddCategory={onAddCategory}
onReorderCategory={onReorderCategory}
onReorderGroup={onReorderGroup}
onBudgetAction={onBudgetAction}
show3Cols={show3Cols}
showHiddenCategories={showHiddenCategories}
pushModal={pushModal}
/>
);
})}
<SingleActiveEditFormProvider formName="mobile-budget-table">
<View
style={{
alignItems: 'flex-start',
justifyContent: 'flex-start',
}}
data-testid="budget-groups"
style={{ flex: '1 0 auto', overflowY: 'auto', paddingBottom: 15 }}
>
<Button onClick={onAddGroup} style={{ fontSize: 12, margin: 10 }}>
Add Group
</Button>
</View>
{expenseGroups
.filter(group => !group.hidden || showHiddenCategories)
.map(group => {
return (
<ExpenseGroup
key={group.id}
type={type}
group={group}
showBudgetedCol={showBudgetedCol}
gestures={gestures}
month={month}
editMode={editMode}
onEditGroup={onEditGroup}
onEditCategory={onEditCategory}
onSaveCategory={onSaveCategory}
onDeleteCategory={onDeleteCategory}
onAddCategory={onAddCategory}
onReorderCategory={onReorderCategory}
onReorderGroup={onReorderGroup}
onBudgetAction={onBudgetAction}
show3Cols={show3Cols}
showHiddenCategories={showHiddenCategories}
pushModal={pushModal}
/>
);
})}
{incomeGroup && (
<IncomeGroup
type={type}
group={incomeGroup}
month={month}
onAddCategory={onAddCategory}
onSaveCategory={onSaveCategory}
onDeleteCategory={onDeleteCategory}
showHiddenCategories={showHiddenCategories}
editMode={editMode}
onEditGroup={onEditGroup}
onEditCategory={onEditCategory}
editingBudgetCategoryId={editingBudgetCategoryId}
onEditCategoryBudget={onEditCategoryBudget}
onBudgetAction={onBudgetAction}
pushModal={pushModal}
/>
)}
</View>
<View
style={{
alignItems: 'flex-start',
justifyContent: 'flex-start',
}}
>
<Button onClick={onAddGroup} style={{ fontSize: 12, margin: 10 }}>
Add Group
</Button>
</View>
{incomeGroup && (
<IncomeGroup
type={type}
group={incomeGroup}
month={month}
onAddCategory={onAddCategory}
onSaveCategory={onSaveCategory}
onDeleteCategory={onDeleteCategory}
showHiddenCategories={showHiddenCategories}
editMode={editMode}
onEditGroup={onEditGroup}
onEditCategory={onEditCategory}
onBudgetAction={onBudgetAction}
pushModal={pushModal}
/>
)}
</View>
</SingleActiveEditFormProvider>
);
}
@@ -1143,10 +1136,6 @@ export function BudgetTable({
pushModal,
onEditGroup,
onEditCategory,
editingBudgetCategoryId,
onEditCategoryBudget,
openBalanceActionMenuId,
onOpenBalanceActionMenu,
}) {
const { width } = useResponsive();
const show3Cols = width >= 360;
@@ -1385,10 +1374,6 @@ export function BudgetTable({
editMode={editMode}
onEditGroup={onEditGroup}
onEditCategory={onEditCategory}
editingBudgetCategoryId={editingBudgetCategoryId}
onEditCategoryBudget={onEditCategoryBudget}
openBalanceActionMenuId={openBalanceActionMenuId}
onOpenBalanceActionMenu={onOpenBalanceActionMenu}
onSaveCategory={onSaveCategory}
onDeleteCategory={onDeleteCategory}
onAddCategory={onAddCategory}
@@ -1423,10 +1408,6 @@ export function BudgetTable({
editMode={editMode}
onEditGroup={onEditGroup}
onEditCategory={onEditCategory}
editingBudgetCategoryId={editingBudgetCategoryId}
onEditCategoryBudget={onEditCategoryBudget}
openBalanceActionMenuId={openBalanceActionMenuId}
onOpenBalanceActionMenu={onOpenBalanceActionMenu}
onSaveCategory={onSaveCategory}
onDeleteCategory={onDeleteCategory}
onAddCategory={onAddCategory}

View File

@@ -3,7 +3,7 @@
"author": "Actual",
"productName": "Actual",
"description": "A simple and powerful personal finance system",
"version": "24.1.0",
"version": "24.2.0",
"scripts": {
"clean": "rm -rf dist",
"update-client": "bin/update-client",

View File

@@ -2,10 +2,4 @@ BEGIN TRANSACTION;
ALTER TABLE accounts ADD COLUMN account_sync_source TEXT;
UPDATE accounts SET
account_sync_source = CASE
WHEN account_id THEN 'goCardless'
ELSE NULL
END;
COMMIT;

View File

@@ -0,0 +1,9 @@
BEGIN TRANSACTION;
UPDATE accounts
SET
account_sync_source = 'goCardless'
WHERE account_id IS NOT NULL
AND account_sync_source IS NULL;
COMMIT;

View File

@@ -3,7 +3,7 @@ import { Notification } from '../../client/state-types/notifications';
import * as monthUtils from '../../shared/months';
import * as db from '../db';
import { setBudget, getSheetValue } from './actions';
import { setBudget, getSheetValue, setGoal } from './actions';
import { parse } from './cleanup-template.pegjs';
export function cleanupTemplate({ month }: { month: string }) {
@@ -35,11 +35,20 @@ async function processCleanup(month: string): Promise<Notification> {
sheetName,
`budget-${category.id}`,
);
const spent = await getSheetValue(
sheetName,
`sum-amount-${category.id}`,
);
await setBudget({
category: category.id,
month,
amount: budgeted - balance,
});
await setGoal({
category: category.id,
month,
goal: -spent,
});
num_sources += 1;
}
if (template.filter(t => t.type === 'sink').length > 0) {

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [twk3]
---
Bundle loot-core types into the API

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [HansiWursti]
---
Added cleared and uncleared Balances to Account Mobile View

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Fixing TypeScript issues when enabling `strictFunctionTypes` (pt.5).

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
Refactored MobileBudget component to TypeScript

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [twk3]
---
Switch desktop-client to the Vite JS framework.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [shall0pass]
---
Goals: Refactor schedules file into functions and improve the readability of the code.

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [davidkus]
---
Adding filter for reconciled transactions.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 2

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 3

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 4

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 5

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 6

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [carkom]
---
Enabling and formatting "viewLabels" button for custom reports page

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [jasonmichalski]
---
Fix net worth graph to show more detail in compact card view

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [Jackenmen]
---
Ask for confirmation when editing date of a locked transaction

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [twk3]
---
TypeScript: Add proper types to runHandler

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [kstockk]
---
Add cleared column in csv export

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Fixing TypeScript issues when enabling `strictFunctionTypes` (pt.4).

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [jasonmichalski]
---
Fix when pressing Enter adds an extra split transaction when no split remains

View File

@@ -1,6 +0,0 @@
---
category: Features
authors: [NikxDa]
---
Add "Distribute" button to distribute remaining split amount across empty splits.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [carkom]
---
Reorganize tableGraph files for custom reports.

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [ScottFries, blakegearin, carkom]
---
Add ability to import categories from CSV

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [twk3]
---
Add api tests for payees and transactions

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 7

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 8

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 9

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 10

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 11

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [carkom]
---
Hide "show ..." checkboxes within menu for custom reports page. Introduce toggle switches.

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [rjwonder]
---
Update sync.ts with additionalInformation as last resort fallback to prevent Payee being empty

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
migration: rename `nordigen_*` secrets to `gocardless_*`

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Electron-app app store (osx) release

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 12

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
eslint: no default exports - part 13

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [twk3]
---
Revert to fix master: Add error Page for special accounts in Mobile

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [zachwhelchel,duplaja,lancepick,latetedemelon]
---
Add option to link an account with SimpleFIN for syncing transactions.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
electron: move back from WebSockets to IPC for internal communications. This should improve the stability of the desktop app.

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [Marethyu1]
---
Allow case insensitive ynab5 import for special 'starting balance' payee

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [carkom]
---
Fix table graph rendering issue for custom reports.

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [youngcw]
---
Add missing borders in report budget table

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [youngcw]
---
Improve report budget pie chart colors

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [MatissJanis]
---
rules: add 'no rules' message and always show the rules table (even if no rules exist)

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [subnut]
---
Fix site.webmanifest to make Actual installable as a Chromium PWA

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [HansiWursti]
---
Re implemented the mobile Account Error Page introduced in #2114 and reverted in #2186

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [shall0pass]
---
Add crossorigin assignment to use credentials for PWA with authentication

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [MatissJanis]
---
Fix multi-autocomplete in rules page causing crashes

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
ESLint to enforce Actual's useNavigate hook

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
electron: split the build script in 2x parts to fix it failing when no code signing cert is provided (PRs from forks).

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
TypeScript: fix some `strictNullChecks: true` issues

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [HansiWursti]
---
Mobile - Disable Save Button while editing Transaction Fields - Fixes #2203

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
removing old OFX parser code in favor of the new one

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [carkom]
---
vite hosting regression fix. adds hosting on network back onto vite.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [twk3]
---
Change the vite chunk filename hash to closely match our webpack syntax

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
TypeScript: fix some `strictNullChecks: true` issues (pt.2)

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
typescript: enable strict mode in most files; disable it in files that still need to be fixed

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [twk3]
---
Restore ability to use console.log in vite

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [MatissJanis]
---
GoCardless: fix sync not working if `additionalInformation` fallback field is null

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [carkom]
---
Moving entities and updating existing for custom reports. Also creating a new entity for the custom report data.

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [carkom]
---
Adding compact identifier to all of the graphs and cleaning them up. Plus other staging bits for saving custom reports.

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [carkom]
---
Add schema and backend functionality for custom reports. This is to enable saving reports in a future PR.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
TypeScript: making some files comply with strict TS.

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [carkom]
---
Fixing a bug where custom reports table graph crashes due to a type mismatch error.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Updated Github issues template to direct bug reports to the support channel (Discord)

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [MatissJanis]
---
Fix 'delete file' button always deleting the cloud file.

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [MatissJanis]
---
Allow un-reconcile (unlock) transactions by clicking on the lock icon

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Upgrading prettier, fixing the issues and enabling it for jsx files too

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [carkom]
---
Making custom reports code more compact and efficient.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Code clean-up: removing unused variables

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Code clean-up: removing unused variables (pt.2)

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [carkom]
---
Adding compact elements to custom reports.

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [MatissJanis]
---
Refactored cash flow report from `victory` to `recharts`

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [youngcw]
---
Fix color in schedule before/after weekend selection

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [joel-jeremy]
---
Update vite / swc / ts versions.

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [MatissJanis]
---
Fix 'uncategorized transactions' flashing in the header on page load

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [edleeman17]
---
Fix link for registering with GoCardless

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [twk3]
---
Fix a missing ref param warning for forwardRef

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [twk3]
---
Fix 'false' passed as title in import transactions modal

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [youngcw]
---
Fix same account sort_order when creating a demo budget

View File

@@ -1,6 +0,0 @@
---
category: Bugfix
authors: [shall0pass]
---
Fix database entry when applying goal templates

View File

@@ -1,6 +0,0 @@
---
category: Enhancements
authors: [joel-jeremy]
---
Add Off Budget category label to mobile transactions page

View File

@@ -1,6 +0,0 @@
---
category: Maintenance
authors: [youngcw]
---
Update vrt instructions