diff --git a/packages/desktop-client/src/components/filters/AppliedFilters.tsx b/packages/desktop-client/src/components/filters/AppliedFilters.tsx
index 930d319276a7e2787081a1775b5bf10133f32b37..538bdd72b7ce54b7d27756ad2fd9511dfaee0e33 100644
--- a/packages/desktop-client/src/components/filters/AppliedFilters.tsx
+++ b/packages/desktop-client/src/components/filters/AppliedFilters.tsx
@@ -12,7 +12,7 @@ type AppliedFiltersProps = {
   onUpdate: (
     filter: RuleConditionEntity,
     newFilter: RuleConditionEntity,
-  ) => RuleConditionEntity;
+  ) => void;
   onDelete: (filter: RuleConditionEntity) => void;
   conditionsOp: string;
   onCondOpChange: (value: string, filters: RuleConditionEntity[]) => void;
diff --git a/packages/desktop-client/src/components/filters/FilterExpression.tsx b/packages/desktop-client/src/components/filters/FilterExpression.tsx
index 08bb15645602f8c248b863ad39961e44efb74550..5a258e951483dab57348649b18ff1a4410b2dc39 100644
--- a/packages/desktop-client/src/components/filters/FilterExpression.tsx
+++ b/packages/desktop-client/src/components/filters/FilterExpression.tsx
@@ -24,7 +24,7 @@ type FilterExpressionProps = {
   value: string | string[] | number | boolean | undefined;
   options: RuleConditionEntity['options'];
   style?: CSSProperties;
-  onChange: (cond: RuleConditionEntity) => RuleConditionEntity;
+  onChange: (cond: RuleConditionEntity) => void;
   onDelete: () => void;
 };
 
diff --git a/packages/desktop-client/src/components/filters/FiltersMenu.jsx b/packages/desktop-client/src/components/filters/FiltersMenu.jsx
index 18889c5159c3a7117b8e5c161f9f6270aa858829..db8459deb718535857b8fcd238c7dc65f86535c7 100644
--- a/packages/desktop-client/src/components/filters/FiltersMenu.jsx
+++ b/packages/desktop-client/src/components/filters/FiltersMenu.jsx
@@ -243,7 +243,7 @@ function ConfigureField({
   );
 }
 
-export function FilterButton({ onApply, compact, hover }) {
+export function FilterButton({ onApply, compact, hover, exclude }) {
   const filters = useFilters();
 
   const dateFormat = useDateFormat() || 'MM/dd/yyyy';
@@ -359,10 +359,12 @@ export function FilterButton({ onApply, compact, hover }) {
             onMenuSelect={name => {
               dispatch({ type: 'configure', field: name });
             }}
-            items={filterFields.map(([name, text]) => ({
-              name,
-              text: titleFirst(text),
-            }))}
+            items={filterFields
+              .filter(f => (exclude ? !exclude.includes(f[0]) : true))
+              .map(([name, text]) => ({
+                name,
+                text: titleFirst(text),
+              }))}
           />
         </Tooltip>
       )}
diff --git a/packages/desktop-client/src/components/filters/FiltersStack.tsx b/packages/desktop-client/src/components/filters/FiltersStack.tsx
index 055fd110c68df65c7ad05a388a028368899a3e64..3d050ec44a57941506fc7efe336754758d8ff158 100644
--- a/packages/desktop-client/src/components/filters/FiltersStack.tsx
+++ b/packages/desktop-client/src/components/filters/FiltersStack.tsx
@@ -27,7 +27,7 @@ export function FiltersStack({
   onUpdateFilter: (
     filter: RuleConditionEntity,
     newFilter: RuleConditionEntity,
-  ) => RuleConditionEntity;
+  ) => void;
   onDeleteFilter: (filter: RuleConditionEntity) => void;
   onClearFilters: () => void;
   onReloadSavedFilter: (savedFilter: SavedFilter, value?: string) => void;
diff --git a/packages/desktop-client/src/components/reports/Change.jsx b/packages/desktop-client/src/components/reports/Change.tsx
similarity index 58%
rename from packages/desktop-client/src/components/reports/Change.jsx
rename to packages/desktop-client/src/components/reports/Change.tsx
index 5267b2c77c729e7809ebc846d5803f9b07a2704a..8c4c429e7fd1485164ab1a302407e3199398519e 100644
--- a/packages/desktop-client/src/components/reports/Change.jsx
+++ b/packages/desktop-client/src/components/reports/Change.tsx
@@ -2,15 +2,24 @@ import React from 'react';
 
 import { integerToCurrency } from 'loot-core/src/shared/util';
 
-import { theme, styles } from '../../style';
+import { styles } from '../../style/styles';
+import { theme } from '../../style/theme';
+import { type CSSProperties } from '../../style/types';
 import { Block } from '../common/Block';
 
-export function Change({ amount }) {
+export function Change({
+  amount,
+  style,
+}: {
+  amount: number;
+  style?: CSSProperties;
+}) {
   return (
     <Block
       style={{
         ...styles.smallText,
         color: amount < 0 ? theme.errorText : theme.noticeTextLight,
+        ...style,
       }}
     >
       {amount >= 0 ? '+' : ''}
diff --git a/packages/desktop-client/src/components/reports/ModeButton.tsx b/packages/desktop-client/src/components/reports/ModeButton.tsx
index 70b00bef7f1548a5a0dba779b891ff69720195e1..503d9692e151fb48367366b723363189bb10db71 100644
--- a/packages/desktop-client/src/components/reports/ModeButton.tsx
+++ b/packages/desktop-client/src/components/reports/ModeButton.tsx
@@ -6,7 +6,7 @@ import { Button } from '../common/Button';
 type ModeButtonProps = {
   selected: boolean;
   children: ReactNode;
-  style: CSSProperties;
+  style?: CSSProperties;
   onSelect: MouseEventHandler<HTMLButtonElement>;
 };
 
diff --git a/packages/desktop-client/src/components/reports/ReportCard.tsx b/packages/desktop-client/src/components/reports/ReportCard.tsx
index 41278b394250bb8873178035bd5ccad1ab4f0cf1..fb69523ab40489fc960349082fd3c5ad94f7b631 100644
--- a/packages/desktop-client/src/components/reports/ReportCard.tsx
+++ b/packages/desktop-client/src/components/reports/ReportCard.tsx
@@ -8,8 +8,8 @@ import { View } from '../common/View';
 
 type ReportCardProps = {
   to: string;
-  report: CustomReportEntity;
   children: ReactNode;
+  report?: CustomReportEntity;
   flex?: string;
   style?: CSSProperties;
 };
diff --git a/packages/desktop-client/src/components/reports/reports/CashFlowCard.jsx b/packages/desktop-client/src/components/reports/reports/CashFlowCard.jsx
index ed8daeb6af17eee3993d259bd89e3697ea237f00..a5984b82c55a3e651e01d82b2f5271c3c746ac0a 100644
--- a/packages/desktop-client/src/components/reports/reports/CashFlowCard.jsx
+++ b/packages/desktop-client/src/components/reports/reports/CashFlowCard.jsx
@@ -102,10 +102,7 @@ export function CashFlowCard() {
           {data && (
             <View style={{ textAlign: 'right' }}>
               <PrivacyFilter activationFilters={[!isCardHovered]}>
-                <Change
-                  amount={income - expenses}
-                  style={{ color: theme.tableText, fontWeight: 300 }}
-                />
+                <Change amount={income - expenses} />
               </PrivacyFilter>
             </View>
           )}
diff --git a/packages/desktop-client/src/components/reports/reports/NetWorthCard.jsx b/packages/desktop-client/src/components/reports/reports/NetWorthCard.jsx
index 3b2963bd4a487b9d9eab4630dede84d0b3b307f1..dc0ca1964de43af8e9a2fbb38742172ad44cb7d8 100644
--- a/packages/desktop-client/src/components/reports/reports/NetWorthCard.jsx
+++ b/packages/desktop-client/src/components/reports/reports/NetWorthCard.jsx
@@ -3,7 +3,7 @@ import React, { useState, useMemo, useCallback } from 'react';
 import * as monthUtils from 'loot-core/src/shared/months';
 import { integerToCurrency } from 'loot-core/src/shared/util';
 
-import { theme, styles } from '../../../style';
+import { styles } from '../../../style';
 import { Block } from '../../common/Block';
 import { View } from '../../common/View';
 import { PrivacyFilter } from '../../PrivacyFilter';
@@ -59,10 +59,7 @@ export function NetWorthCard({ accounts }) {
                 </PrivacyFilter>
               </Block>
               <PrivacyFilter activationFilters={[!isCardHovered]}>
-                <Change
-                  amount={data.totalChange}
-                  style={{ color: theme.tableText, fontWeight: 300 }}
-                />
+                <Change amount={data.totalChange} />
               </PrivacyFilter>
             </View>
           )}
diff --git a/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts
index 1f4569ccca36189f4d02924a24c1a8f1d7580e36..860efbc0755f8bdbebe62c4528a5170f2fe016ed 100644
--- a/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts
+++ b/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts
@@ -110,7 +110,6 @@ export function createCustomSpreadsheet({
           startDate,
           endDate,
           interval,
-          selectedCategories,
           categoryFilter,
           conditionsOpKey,
           filters,
@@ -122,7 +121,6 @@ export function createCustomSpreadsheet({
           startDate,
           endDate,
           interval,
-          selectedCategories,
           categoryFilter,
           conditionsOpKey,
           filters,
diff --git a/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts
index b473e557754937e3e2fa9789a27657817e3816b1..da794cdfe3518f8377d3908ca837a2fc0744e666 100644
--- a/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts
+++ b/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts
@@ -59,7 +59,6 @@ export function createGroupedSpreadsheet({
           startDate,
           endDate,
           interval,
-          selectedCategories,
           categoryFilter,
           conditionsOpKey,
           filters,
@@ -71,7 +70,6 @@ export function createGroupedSpreadsheet({
           startDate,
           endDate,
           interval,
-          selectedCategories,
           categoryFilter,
           conditionsOpKey,
           filters,
diff --git a/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts b/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts
index 986738eaeebb7dfd3a056579c6e49b26a55be3ee..f72964f35ba4668f7e3932ea8f1c32e36591954a 100644
--- a/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts
+++ b/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts
@@ -8,7 +8,6 @@ export function makeQuery(
   startDate: string,
   endDate: string,
   interval: string,
-  selectedCategories: CategoryEntity[],
   categoryFilter: CategoryEntity[],
   conditionsOpKey: string,
   filters: unknown[],
@@ -27,7 +26,7 @@ export function makeQuery(
   const query = q('transactions')
     //Apply Category_Selector
     .filter(
-      selectedCategories && {
+      categoryFilter && {
         $or: [
           {
             category: null,
@@ -66,6 +65,7 @@ export function makeQuery(
       { date: intervalGroup },
       { category: { $id: '$category.id' } },
       { categoryHidden: { $id: '$category.hidden' } },
+      { categoryIncome: { $id: '$category.is_income' } },
       { categoryGroup: { $id: '$category.group.id' } },
       { categoryGroupHidden: { $id: '$category.group.hidden' } },
       { account: { $id: '$account.id' } },
diff --git a/packages/desktop-client/src/style/themes/dark.ts b/packages/desktop-client/src/style/themes/dark.ts
index 185b042e4f6d0150f17334f821d1286a215f4f17..d580e723ab9c2cca174dc78f0b38140d9a274dea 100644
--- a/packages/desktop-client/src/style/themes/dark.ts
+++ b/packages/desktop-client/src/style/themes/dark.ts
@@ -188,5 +188,6 @@ export const pillBorderSelected = colorPalette.purple400;
 
 export const reportsRed = colorPalette.red300;
 export const reportsBlue = colorPalette.blue400;
+export const reportsGreen = colorPalette.green400;
 export const reportsLabel = pageText;
 export const reportsInnerLabel = colorPalette.navy800;
diff --git a/packages/desktop-client/src/style/themes/development.ts b/packages/desktop-client/src/style/themes/development.ts
index c8a47c85eba59eb9fe4126dc75c4f7d44ab1303e..c4f71d3df5ef0b4a777803e916b74c2db4ab38ab 100644
--- a/packages/desktop-client/src/style/themes/development.ts
+++ b/packages/desktop-client/src/style/themes/development.ts
@@ -187,4 +187,6 @@ export const pillBorderSelected = colorPalette.purple500;
 
 export const reportsRed = colorPalette.red300;
 export const reportsBlue = colorPalette.blue400;
+export const reportsGreen = colorPalette.green400;
 export const reportsLabel = colorPalette.navy900;
+export const reportsInnerLabel = colorPalette.navy800;
diff --git a/packages/desktop-client/src/style/themes/light.ts b/packages/desktop-client/src/style/themes/light.ts
index 37549803de44d628ff13ee3b761434b548dc6d80..294122cf31d6e34b956600d0d0672e1740482544 100644
--- a/packages/desktop-client/src/style/themes/light.ts
+++ b/packages/desktop-client/src/style/themes/light.ts
@@ -190,5 +190,6 @@ export const pillBorderSelected = colorPalette.purple500;
 
 export const reportsRed = colorPalette.red300;
 export const reportsBlue = colorPalette.blue400;
+export const reportsGreen = colorPalette.green400;
 export const reportsLabel = colorPalette.navy900;
 export const reportsInnerLabel = colorPalette.navy800;
diff --git a/packages/desktop-client/src/style/themes/midnight.ts b/packages/desktop-client/src/style/themes/midnight.ts
index 135194af8272b1a8416df9a8fa5ad10eda37e001..9a6fc4fbe1642e215696e42c31b6d96f5137a262 100644
--- a/packages/desktop-client/src/style/themes/midnight.ts
+++ b/packages/desktop-client/src/style/themes/midnight.ts
@@ -190,4 +190,6 @@ export const pillBorderSelected = colorPalette.purple300;
 
 export const reportsRed = colorPalette.red300;
 export const reportsBlue = colorPalette.blue400;
+export const reportsGreen = colorPalette.green400;
 export const reportsLabel = pageText;
+export const reportsInnerLabel = colorPalette.navy800;
diff --git a/packages/loot-core/src/shared/months.ts b/packages/loot-core/src/shared/months.ts
index 634324780a269bf3a7810f1f4296389a8599c72b..6be72eddc8f135d025c61ca03a6541c63dbc54c5 100644
--- a/packages/loot-core/src/shared/months.ts
+++ b/packages/loot-core/src/shared/months.ts
@@ -347,6 +347,10 @@ export function getMonth(day: string): string {
   return day.slice(0, 7);
 }
 
+export function getDay(day: string): number {
+  return Number(d.format(_parse(day), 'dd'));
+}
+
 export function getMonthEnd(day: string): string {
   return subDays(nextMonth(day.slice(0, 7)) + '-01', 1);
 }
diff --git a/upcoming-release-notes/2659.md b/upcoming-release-notes/2659.md
new file mode 100644
index 0000000000000000000000000000000000000000..a509cc68948012123f77c9818acaf3dd94b6d408
--- /dev/null
+++ b/upcoming-release-notes/2659.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [carkom]
+---
+
+Some slight adjustments to tidy up the code and make it work better. Some TS updates as well.