mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-10 20:23:07 -05:00
Compare commits
4 Commits
ts-LoadBac
...
v24.2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d8639a2a71 | ||
|
|
734191424b | ||
|
|
5d4fcfde00 | ||
|
|
54d7e5460a |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@actual-app/api",
|
||||
"version": "6.4.0",
|
||||
"version": "6.5.0",
|
||||
"license": "MIT",
|
||||
"description": "An API for Actual",
|
||||
"engines": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@actual-app/web",
|
||||
"version": "24.1.0",
|
||||
"version": "24.2.0",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
"build"
|
||||
|
||||
@@ -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'}
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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) {
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Bundle loot-core types into the API
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [HansiWursti]
|
||||
---
|
||||
|
||||
Added cleared and uncleared Balances to Account Mobile View
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Fixing TypeScript issues when enabling `strictFunctionTypes` (pt.5).
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
Refactored MobileBudget component to TypeScript
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Switch desktop-client to the Vite JS framework.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [shall0pass]
|
||||
---
|
||||
|
||||
Goals: Refactor schedules file into functions and improve the readability of the code.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [davidkus]
|
||||
---
|
||||
|
||||
Adding filter for reconciled transactions.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 2
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 3
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 4
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 5
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 6
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
Enabling and formatting "viewLabels" button for custom reports page
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [jasonmichalski]
|
||||
---
|
||||
|
||||
Fix net worth graph to show more detail in compact card view
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [Jackenmen]
|
||||
---
|
||||
|
||||
Ask for confirmation when editing date of a locked transaction
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
TypeScript: Add proper types to runHandler
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [kstockk]
|
||||
---
|
||||
|
||||
Add cleared column in csv export
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Fixing TypeScript issues when enabling `strictFunctionTypes` (pt.4).
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [jasonmichalski]
|
||||
---
|
||||
|
||||
Fix when pressing Enter adds an extra split transaction when no split remains
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Features
|
||||
authors: [NikxDa]
|
||||
---
|
||||
|
||||
Add "Distribute" button to distribute remaining split amount across empty splits.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
Reorganize tableGraph files for custom reports.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [ScottFries, blakegearin, carkom]
|
||||
---
|
||||
|
||||
Add ability to import categories from CSV
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Add api tests for payees and transactions
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 7
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 8
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 9
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 10
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 11
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
Hide "show ..." checkboxes within menu for custom reports page. Introduce toggle switches.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [rjwonder]
|
||||
---
|
||||
|
||||
Update sync.ts with additionalInformation as last resort fallback to prevent Payee being empty
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
migration: rename `nordigen_*` secrets to `gocardless_*`
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Electron-app app store (osx) release
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 12
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
eslint: no default exports - part 13
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Revert to fix master: Add error Page for special accounts in Mobile
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [zachwhelchel,duplaja,lancepick,latetedemelon]
|
||||
---
|
||||
|
||||
Add option to link an account with SimpleFIN for syncing transactions.
|
||||
@@ -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.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [Marethyu1]
|
||||
---
|
||||
|
||||
Allow case insensitive ynab5 import for special 'starting balance' payee
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
Fix table graph rendering issue for custom reports.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [youngcw]
|
||||
---
|
||||
|
||||
Add missing borders in report budget table
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [youngcw]
|
||||
---
|
||||
|
||||
Improve report budget pie chart colors
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
rules: add 'no rules' message and always show the rules table (even if no rules exist)
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [subnut]
|
||||
---
|
||||
|
||||
Fix site.webmanifest to make Actual installable as a Chromium PWA
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [HansiWursti]
|
||||
---
|
||||
|
||||
Re implemented the mobile Account Error Page introduced in #2114 and reverted in #2186
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [shall0pass]
|
||||
---
|
||||
|
||||
Add crossorigin assignment to use credentials for PWA with authentication
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Fix multi-autocomplete in rules page causing crashes
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
ESLint to enforce Actual's useNavigate hook
|
||||
@@ -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).
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
TypeScript: fix some `strictNullChecks: true` issues
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [HansiWursti]
|
||||
---
|
||||
|
||||
Mobile - Disable Save Button while editing Transaction Fields - Fixes #2203
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
removing old OFX parser code in favor of the new one
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
vite hosting regression fix. adds hosting on network back onto vite.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Change the vite chunk filename hash to closely match our webpack syntax
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
TypeScript: fix some `strictNullChecks: true` issues (pt.2)
|
||||
@@ -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
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Restore ability to use console.log in vite
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
GoCardless: fix sync not working if `additionalInformation` fallback field is null
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
TypeScript: making some files comply with strict TS.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
Fixing a bug where custom reports table graph crashes due to a type mismatch error.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Updated Github issues template to direct bug reports to the support channel (Discord)
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Fix 'delete file' button always deleting the cloud file.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Allow un-reconcile (unlock) transactions by clicking on the lock icon
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Upgrading prettier, fixing the issues and enabling it for jsx files too
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
Making custom reports code more compact and efficient.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Code clean-up: removing unused variables
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Code clean-up: removing unused variables (pt.2)
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [carkom]
|
||||
---
|
||||
|
||||
Adding compact elements to custom reports.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Refactored cash flow report from `victory` to `recharts`
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [youngcw]
|
||||
---
|
||||
|
||||
Fix color in schedule before/after weekend selection
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
Update vite / swc / ts versions.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [MatissJanis]
|
||||
---
|
||||
|
||||
Fix 'uncategorized transactions' flashing in the header on page load
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [edleeman17]
|
||||
---
|
||||
|
||||
Fix link for registering with GoCardless
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Fix a missing ref param warning for forwardRef
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [twk3]
|
||||
---
|
||||
|
||||
Fix 'false' passed as title in import transactions modal
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [youngcw]
|
||||
---
|
||||
|
||||
Fix same account sort_order when creating a demo budget
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Bugfix
|
||||
authors: [shall0pass]
|
||||
---
|
||||
|
||||
Fix database entry when applying goal templates
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Enhancements
|
||||
authors: [joel-jeremy]
|
||||
---
|
||||
|
||||
Add Off Budget category label to mobile transactions page
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [youngcw]
|
||||
---
|
||||
|
||||
Update vrt instructions
|
||||
Reference in New Issue
Block a user