[PR #7946] [AI] Add Export button to transaction toolbar (Filters & Search) #131613

Open
opened 2026-06-16 00:18:36 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/7946
Author: @moaz381
Created: 5/25/2026
Status: 🔄 Open

Base: masterHead: master


📝 Commits (10+)

  • 439bbdf [AI] Add Export button to transaction toolbar when filters or search are active
  • 9afe131 [autofix.ci] apply automated fixes
  • 02af5cf [AI] Rename release notes file to 7946
  • 333f6b1 Merge remote-tracking branch 'origin/master'
  • 9e8c52e [AI] Fix dangling hyphen in export filename for symbol-only searches
  • dd0d636 Update VRT screenshots
  • 72d962c Enhance Export button description in release notes
  • bb28acf [autofix.ci] apply automated fixes
  • 9b68693 Enhance transaction toolbar with Export button
  • 1b1838a Merge branch 'master' into master

📊 Changes

15 files changed (+43 additions, -2 deletions)

View changed files

📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-10-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-11-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-12-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-group-10-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-group-11-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-group-12-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-7-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-8-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-9-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-payee-7-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-payee-8-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-payee-9-chromium-linux.png (+0 -0)
📝 packages/desktop-client/src/components/accounts/Account.tsx (+23 -2)
📝 packages/desktop-client/src/components/accounts/Header.tsx (+14 -0)
upcoming-release-notes/7946.md (+6 -0)

📄 Description

Users can apply filters (hashtags, category, date range, payee, etc.) and a search string to the transaction view, but had no way to export the resulting filtered set — the only export path was buried in the account kebab menu, and it silently ignored any active search string.

This PR makes filtered exports discoverable and correct:

  • Adds an Export button to the toolbar that appears automatically when a filter or search is active

  • Fixes the export to include the active search term in the query (previously the kebab-menu Export used currentQuery which was not updated by search)

  • Names the exported file based on context: -

    .csv when searching, -filtered.csv when a filter condition is applied

    Related issue(s)

    N/A

    Testing

    1. Open any account → confirm Export button is not visible with no filters or search active
    2. Type in the search box → confirm Export button appears in the toolbar
    3. Click Export → confirm the downloaded CSV filename includes the search term and contains only matching transactions
    4. Clear search → confirm Export button disappears
    5. Apply a filter (e.g. click a #hashtag in notes, or use the Filter button) → confirm Export button appears
    6. Click Export with filter active → confirm filename ends in -filtered.csv and CSV contains only filtered transactions
    7. Open the account kebab menu → confirm the existing "Export" item is still present and works unchanged

    Checklist

    • Release notes added
    • No obvious regressions in affected areas
    • Self-review has been performed - I understand what each change in the code does and why it is needed

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 37 14.03 MB → 14.03 MB (+1.9 kB) +0.01%
loot-core 1 5.34 MB 0%
api 2 3.97 MB 0%
cli 1 7.97 MB 0%
crdt 1 11.12 kB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
37 14.03 MB → 14.03 MB (+1.9 kB) +0.01%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/component-library/src/icons/v2/UploadThickBottom.tsx 🆕 +918 B 0 B → 918 B
src/components/accounts/Header.tsx 📈 +627 B (+2.19%) 28 kB → 28.61 kB
src/components/accounts/Account.tsx 📈 +577 B (+1.28%) 44.09 kB → 44.66 kB
locale/en.json 📈 +113 B (+0.06%) 198.13 kB → 198.24 kB
locale/it.json 📉 -23 B (-0.01%) 165.02 kB → 165 kB
locale/de.json 📉 -25 B (-0.01%) 170.79 kB → 170.77 kB
locale/pt-BR.json 📉 -28 B (-0.01%) 188.46 kB → 188.43 kB
locale/uk.json 📉 -32 B (-0.02%) 207.49 kB → 207.46 kB
locale/ca.json 📉 -30 B (-0.02%) 186.78 kB → 186.75 kB
locale/es.json 📉 -32 B (-0.02%) 178.71 kB → 178.68 kB
locale/nb-NO.json 📉 -27 B (-0.02%) 148.08 kB → 148.05 kB
locale/fr.json 📉 -41 B (-0.02%) 178.61 kB → 178.57 kB
locale/da.json 📉 -25 B (-0.02%) 101.17 kB → 101.15 kB
locale/zh-Hans.json 📉 -29 B (-0.02%) 116.92 kB → 116.89 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
static/js/wide.js 296.1 kB → 297.28 kB (+1.18 kB) +0.40%
static/js/Value.js 5.08 MB → 5.08 MB (+918 B) +0.02%
static/js/en.js 198.13 kB → 198.24 kB (+113 B) +0.06%

Smaller

Asset File Size % Changed
static/js/fr.js 178.61 kB → 178.57 kB (-41 B) -0.02%
static/js/es.js 178.71 kB → 178.68 kB (-32 B) -0.02%
static/js/uk.js 207.49 kB → 207.46 kB (-32 B) -0.02%
static/js/ca.js 186.78 kB → 186.75 kB (-30 B) -0.02%
static/js/zh-Hans.js 116.92 kB → 116.89 kB (-29 B) -0.02%
static/js/pt-BR.js 188.46 kB → 188.43 kB (-28 B) -0.01%
static/js/nb-NO.js 148.08 kB → 148.05 kB (-27 B) -0.02%
static/js/da.js 101.17 kB → 101.15 kB (-25 B) -0.02%
static/js/de.js 170.79 kB → 170.77 kB (-25 B) -0.01%
static/js/it.js 165.02 kB → 165 kB (-23 B) -0.01%

Unchanged

Asset File Size % Changed
static/js/index.js 1.54 MB 0%
static/js/BackgroundImage.js 121.09 kB 0%
static/js/FormulaEditor.js 962.55 kB 0%
static/js/ManageRules.js 46.98 kB 0%
static/js/PayeeRuleCountLabel.js 7.33 kB 0%
static/js/ReportRouter.js 1.26 MB 0%
static/js/ScheduleEditForm.js 146.44 kB 0%
static/js/SchedulesTable.js 202.7 kB 0%
static/js/TransactionEdit.js 90.63 kB 0%
static/js/TransactionList.js 85.81 kB 0%
static/js/_baseIsEqual.js 98.38 kB 0%
static/js/client.js 451.37 kB 0%
static/js/en-GB.js 9.25 kB 0%
static/js/extends.js 500.61 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/narrow.js 364.2 kB 0%
static/js/nl.js 106.24 kB 0%
static/js/resize-observer.js 18.06 kB 0%
static/js/th.js 174.48 kB 0%
static/js/theme.js 31.77 kB 0%
static/js/toString.js 705.14 kB 0%
static/js/useFormatList.js 2.52 kB 0%
static/js/useTransactionBatchActions.js 9.71 kB 0%
static/js/workbox-window.prod.es5.js 7.33 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 5.34 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
kcab.worker.D308xu1O.js 5.34 MB 0%

api

Total

Files count Total bundle size % Changed
2 3.97 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
index.js 3.97 MB 0%
models.js 0 B 0%

cli

Total

Files count Total bundle size % Changed
1 7.97 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
cli.js 7.97 MB 0%

crdt

Total

Files count Total bundle size % Changed
1 11.12 kB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
index.js 11.12 kB 0%

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/actualbudget/actual/pull/7946 **Author:** [@moaz381](https://github.com/moaz381) **Created:** 5/25/2026 **Status:** 🔄 Open **Base:** `master` ← **Head:** `master` --- ### 📝 Commits (10+) - [`439bbdf`](https://github.com/actualbudget/actual/commit/439bbdfa62039d37981cbb48703b4918ecae16dc) [AI] Add Export button to transaction toolbar when filters or search are active - [`9afe131`](https://github.com/actualbudget/actual/commit/9afe131ff2a1d93ed602ebfa0d2fa4ef49ac3e18) [autofix.ci] apply automated fixes - [`02af5cf`](https://github.com/actualbudget/actual/commit/02af5cf90860ead6da16698b82a9a623b42f326a) [AI] Rename release notes file to 7946 - [`333f6b1`](https://github.com/actualbudget/actual/commit/333f6b12fbe99be218d30da1e562f2d0b408e91c) Merge remote-tracking branch 'origin/master' - [`9e8c52e`](https://github.com/actualbudget/actual/commit/9e8c52e406d6dc1cb6a6ca14b6fac2d9484f13c2) [AI] Fix dangling hyphen in export filename for symbol-only searches - [`dd0d636`](https://github.com/actualbudget/actual/commit/dd0d636a127bba2eac47d5c9b5cabc7c18def325) Update VRT screenshots - [`72d962c`](https://github.com/actualbudget/actual/commit/72d962cb1a76f4f4d0a735ca86144aaebdc9af99) Enhance Export button description in release notes - [`bb28acf`](https://github.com/actualbudget/actual/commit/bb28acf0e4a7a4917a6f999ab7f740915182d60b) [autofix.ci] apply automated fixes - [`9b68693`](https://github.com/actualbudget/actual/commit/9b68693a1b720ee3b98e9527d315404fd0f93cec) Enhance transaction toolbar with Export button - [`1b1838a`](https://github.com/actualbudget/actual/commit/1b1838a296a781a3b8b32cc4624d300067131169) Merge branch 'master' into master ### 📊 Changes **15 files changed** (+43 additions, -2 deletions) <details> <summary>View changed files</summary> 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-10-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-11-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-12-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-group-10-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-group-11-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-category-group-12-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-7-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-8-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-9-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-payee-7-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-payee-8-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-payee-9-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/src/components/accounts/Account.tsx` (+23 -2) 📝 `packages/desktop-client/src/components/accounts/Header.tsx` (+14 -0) ➕ `upcoming-release-notes/7946.md` (+6 -0) </details> ### 📄 Description Users can apply filters (hashtags, category, date range, payee, etc.) and a search string to the transaction view, but had no way to export the resulting filtered set — the only export path was buried in the account kebab menu, and it silently ignored any active search string. This PR makes filtered exports discoverable and correct: - Adds an Export button to the toolbar that appears automatically when a filter or search is active - Fixes the export to include the active search term in the query (previously the kebab-menu Export used currentQuery which was not updated by search) - Names the exported file based on context: <account>-<search>.csv when searching, <account>-filtered.csv when a filter condition is applied Related issue(s) N/A Testing 1. Open any account → confirm Export button is not visible with no filters or search active 2. Type in the search box → confirm Export button appears in the toolbar 3. Click Export → confirm the downloaded CSV filename includes the search term and contains only matching transactions 4. Clear search → confirm Export button disappears 5. Apply a filter (e.g. click a #hashtag in notes, or use the Filter button) → confirm Export button appears 6. Click Export with filter active → confirm filename ends in -filtered.csv and CSV contains only filtered transactions 7. Open the account kebab menu → confirm the existing "Export" item is still present and works unchanged Checklist - [x] Release notes added - [x] No obvious regressions in affected areas - [x] Self-review has been performed - I understand what each change in the code does and why it is needed <!--- actual-bot-sections ---> <hr /> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 37 | 14.03 MB → 14.03 MB (+1.9 kB) | +0.01% loot-core | 1 | 5.34 MB | 0% api | 2 | 3.97 MB | 0% cli | 1 | 7.97 MB | 0% crdt | 1 | 11.12 kB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 37 | 14.03 MB → 14.03 MB (+1.9 kB) | +0.01% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/component-library/src/icons/v2/UploadThickBottom.tsx` | 🆕 +918 B | 0 B → 918 B `src/components/accounts/Header.tsx` | 📈 +627 B (+2.19%) | 28 kB → 28.61 kB `src/components/accounts/Account.tsx` | 📈 +577 B (+1.28%) | 44.09 kB → 44.66 kB `locale/en.json` | 📈 +113 B (+0.06%) | 198.13 kB → 198.24 kB `locale/it.json` | 📉 -23 B (-0.01%) | 165.02 kB → 165 kB `locale/de.json` | 📉 -25 B (-0.01%) | 170.79 kB → 170.77 kB `locale/pt-BR.json` | 📉 -28 B (-0.01%) | 188.46 kB → 188.43 kB `locale/uk.json` | 📉 -32 B (-0.02%) | 207.49 kB → 207.46 kB `locale/ca.json` | 📉 -30 B (-0.02%) | 186.78 kB → 186.75 kB `locale/es.json` | 📉 -32 B (-0.02%) | 178.71 kB → 178.68 kB `locale/nb-NO.json` | 📉 -27 B (-0.02%) | 148.08 kB → 148.05 kB `locale/fr.json` | 📉 -41 B (-0.02%) | 178.61 kB → 178.57 kB `locale/da.json` | 📉 -25 B (-0.02%) | 101.17 kB → 101.15 kB `locale/zh-Hans.json` | 📉 -29 B (-0.02%) | 116.92 kB → 116.89 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** Asset | File Size | % Changed ----- | --------- | --------- static/js/wide.js | 296.1 kB → 297.28 kB (+1.18 kB) | +0.40% static/js/Value.js | 5.08 MB → 5.08 MB (+918 B) | +0.02% static/js/en.js | 198.13 kB → 198.24 kB (+113 B) | +0.06% **Smaller** Asset | File Size | % Changed ----- | --------- | --------- static/js/fr.js | 178.61 kB → 178.57 kB (-41 B) | -0.02% static/js/es.js | 178.71 kB → 178.68 kB (-32 B) | -0.02% static/js/uk.js | 207.49 kB → 207.46 kB (-32 B) | -0.02% static/js/ca.js | 186.78 kB → 186.75 kB (-30 B) | -0.02% static/js/zh-Hans.js | 116.92 kB → 116.89 kB (-29 B) | -0.02% static/js/pt-BR.js | 188.46 kB → 188.43 kB (-28 B) | -0.01% static/js/nb-NO.js | 148.08 kB → 148.05 kB (-27 B) | -0.02% static/js/da.js | 101.17 kB → 101.15 kB (-25 B) | -0.02% static/js/de.js | 170.79 kB → 170.77 kB (-25 B) | -0.01% static/js/it.js | 165.02 kB → 165 kB (-23 B) | -0.01% **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 1.54 MB | 0% static/js/BackgroundImage.js | 121.09 kB | 0% static/js/FormulaEditor.js | 962.55 kB | 0% static/js/ManageRules.js | 46.98 kB | 0% static/js/PayeeRuleCountLabel.js | 7.33 kB | 0% static/js/ReportRouter.js | 1.26 MB | 0% static/js/ScheduleEditForm.js | 146.44 kB | 0% static/js/SchedulesTable.js | 202.7 kB | 0% static/js/TransactionEdit.js | 90.63 kB | 0% static/js/TransactionList.js | 85.81 kB | 0% static/js/_baseIsEqual.js | 98.38 kB | 0% static/js/client.js | 451.37 kB | 0% static/js/en-GB.js | 9.25 kB | 0% static/js/extends.js | 500.61 kB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 13.46 kB | 0% static/js/narrow.js | 364.2 kB | 0% static/js/nl.js | 106.24 kB | 0% static/js/resize-observer.js | 18.06 kB | 0% static/js/th.js | 174.48 kB | 0% static/js/theme.js | 31.77 kB | 0% static/js/toString.js | 705.14 kB | 0% static/js/useFormatList.js | 2.52 kB | 0% static/js/useTransactionBatchActions.js | 9.71 kB | 0% static/js/workbox-window.prod.es5.js | 7.33 kB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 5.34 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.D308xu1O.js | 5.34 MB | 0% </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 2 | 3.97 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- index.js | 3.97 MB | 0% models.js | 0 B | 0% </div> </details> --- #### cli **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 7.97 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- cli.js | 7.97 MB | 0% </div> </details> --- #### crdt **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 11.12 kB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- index.js | 11.12 kB | 0% </div> </details> </details> <!--- bundlestats-action-comment key:combined end ---> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-06-16 00:18:36 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#131613