* [AI] Improve theme catalog responsive layout in ThemeInstaller
* Refactor ColorPalette and ThemeInstaller components for improved layout and responsiveness
* Fix typo in Custom Reports description
* Correct category name from 'Reports' to 'Themes'
* [AI] Fix theme catalog scrollbar overlapping content
Reserve space for the scrollbar by adding right padding to catalog rows
so items don't get clipped when the list overflows.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* [AI] Add .claude/ directory to .gitignore
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Modify .gitignore for Claude worktrees
Update .gitignore to include Claude worktrees and exclude settings.json
* Update .gitignore to include claude worktree folder
* Add .claude/settings.local.json to .gitignore
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* [AI] Add self-signed SSL certificate documentation to CLI docs
Add a section explaining how to use NODE_TLS_REJECT_UNAUTHORIZED=0
to allow the CLI to connect to servers with self-signed SSL certificates,
with a security caution about the implications.
Closes#7327https://claude.ai/code/session_01Mwsuc9By67uzSiMLxvPsMq
* Add release notes for PR #7360
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* [AI] Add worktree creation hook to run yarn install
Add a WorktreeCreate hook in .claude/settings.json that runs a setup
script after creating a new git worktree. The script creates a detached
worktree and runs yarn install to ensure dependencies are available.
https://claude.ai/code/session_01MjuJLWcxNU6nbWQDrgGpPr
* [AI] Move worktree setup hook to husky post-checkout for universal support
Instead of a Claude Code-specific hook, detect new worktree creation in
the existing husky post-checkout hook by checking for missing node_modules.
This works with any tool that creates git worktrees (Claude Code, Cursor,
CLI, etc.) since git runs post-checkout after worktree creation.
https://claude.ai/code/session_01MjuJLWcxNU6nbWQDrgGpPr
* Add release notes for PR #7393
* Update 7393.md
* [AI] Fix post-checkout hook to propagate yarn install failures
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
* Add documentation for self-signed cert healthchecks
Adds instruction to set NODE_EXTRA_CA_CERTS in docker-compose healthcheck commands so Node.js can trust the certificate.
* [autofix.ci] apply automated fixes
* fixup! Add documentation for self-signed cert healthchecks
* [autofix.ci] apply automated fixes
* Update Docker health checks with self-signed certs
If using self signed certs, comment the first test line and uncomment
the second test line.
* fixup! Update Docker health checks with self-signed certs
* fixup! Add documentation for self-signed cert healthchecks
* fixup! Update Docker health checks with self-signed certs
* [autofix.ci] apply automated fixes
* fixup! Add documentation for self-signed cert healthchecks
* fixup! Update Docker health checks with self-signed certs
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Add tourSidebar with various tour documentation
Added a new sidebar for the tour section with multiple entries.
* Add 'Tour Actual' sidebar to Docusaurus config
* Remove 'A Tour of Actual' from docs sidebar
Removed 'A Tour of Actual' category and its items from the sidebar.
* Rename 'Tour Actual' to 'Tour' in sidebar
* Add button to proportionally distribute remaining amount of split transaction among child transactions
* Added release note
* Increased min width for split error popover so all buttons are visible
* Updated release note
* Merge proportional distribution into even distribution button
* Added docs on split transactions
* [autofix.ci] apply automated fixes
* Fixed spelling
* [autofix.ci] apply automated fixes
* Change split transaction popover hack to use resize event
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Refine user interface documentation for clarity
Updated text for clarity and corrected typos in the user interface documentation.
* Clarify server status and sync icon details
Updated descriptions for server status and sync icon interactions.
* Clarify server status and sidebar account display
Updated server status descriptions for clarity and improved wording in the sidebar section.
* [AI] Fix updateTransaction corrupting split parents with partial updates
When `api.updateTransaction(id, { notes: '...' })` is called on a split
parent, the `updateTransaction` helper replaces the parent with the
sparse update object (`{ id, notes }`) instead of merging it with
the existing transaction data. This causes `recalculateSplit` to see
`amount` as `undefined` (→ 0), which doesn't match the children's
total and sets a `SplitTransactionError` on the parent. `makeChild`
also inherits undefined `account`, `date`, and `cleared` values,
potentially creating broken child rows.
Fix: merge the incoming partial fields (`{ ...trans, ...transaction }`)
so all existing properties are preserved.
Add a test that performs a notes-only update on a split parent and
asserts no error is set and the amount stays intact.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* [AI] Add release notes for PR #7242
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Address review feedback: remove verbose comment and simplify release note
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: L. Warren Thompson <lwarrenthompson@Warren-MBP.local>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Standardise table keyboard navigation by preventing browser scroll with arrow keys
* Add release note
* Apply the preventDefault() in specific cases so that it is not applied to default
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* fix icon templates with `module.exports` to `export default`
* Add `@svgr/babel-plugin-add-jsx-attribute` to dependencies
* Run `yarn generate:icons`, and set prettier singleQuote to reduce changes
* Add release note
* Add temporary fix for `SvgChartArea`
* Add `ChartArea` svg from the existing tsx
* CI rerun
* Implement Sankey graph report
* Add release notes
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6068
* Remove local debug settings
* [autofix.ci] apply automated fixes
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6068
* Improve graphs from comments
* Fix lints
* coderabit fixes
* Fix filtering and UI enhancements
* remove pngs
* Fix typecheck
* Another type issue
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6068
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6068
* Fix strict typing issues
* Update report page
Now better conforms with components from other reports, e.g. by reusing Header
Makes it possible to display a period longer than one month.
* Change view description order
* Formatting and cleanup
* Removed difference section, as it will be difficult to get a reliable view across months
* Introduce the Timeframe param, similar to Spending report, to allow saving a Live sliding window.
* Allow filtering just the last month
* Fix linting errors
* Remove all information about income
* Remove debugging statement
* Sort categories and subcategories by amount
* Move compact mode to spreadsheet to fix Card view more easily
* Update tests file
* Add release notes
* Rename release notes to match PR#
* Fix autofix.ci issues
* Update packages/desktop-client/e2e/sankey.test.ts
Enable experimental feature fall all tests, pr. coderabbit recommendation
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Add sankey-card to isWidgetType
* Gate Sankey routes to prevent direct URL bypass
* Fix typo
* Change node transformation to work by key instead of name, to remove risk of duplicate issues
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Prevent false-positive pass in month-change test.
* Translate mode to a proper label
* Fix message for empty data
* Enabled LoadingIndicator until data is ready
* Change card default mode
* More robust filtering
* Fixed issue with budgeted spreadsheet not using 'end' date
* Allow copying SankeyCard to dashboard
* Fix typing and linting issues
* Remove e2e tests
I cannot currently get them to pass, because I dont fully understand playwright and how they are supposed to work. I can see that they don't exist for other reports. We can add them later if required.
* Remove unecessary sankey reference
* Refactor spreadsheet
* Remove dead code from SankeyGraph
* Collect to Other if too many subcategories
* Edit wrong comment
* Linting and typechecking
* Show remaining amount to budget
* Hide description on narrow device
* Add visual clue if 'To budget' is larger than 'Budgeted' and would extend below the edge of the graph
* Add colors to the links
* Fix report card showing subcategories instead of main categories
* Add tooltip info to Other on SankeyCard
* Create globalOther flag and implement greedy category reduction algorithm
* Allow user to select between Global or Per category Other
* Allow user to choose number of subcategories to show
* Allow user to select how subcategories are sorted
* Fix budget filtering
* [autofix.ci] apply automated fixes
* Condense sorting and Other-grouping to one option
* Implement Sort as budget option
* Dynamically adjust topN based on SankeyCard height
* Remove old feature flags from previous PR
---------
Co-authored-by: andrewhumble <43395285+andrewhumble@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Fix keyboard shortcut Mac key for undo operations
Updated keyboard shortcut instructions for Mac & make consistent.
* Add files via upload
* Fix undo shortcut from 'K' to 'Z'
Updated keyboard shortcut for undo operation in payees guide. COFFEE!
* Revise budget section for clarity and consistency
Updated category descriptions and improved Markdown support details.
* Add files via upload
* Fix grammatical error in budget.md
* Fix typo and clarify Markdown description in budget.md
Corrected a typo in the documentation regarding the chevrons and clarified the description of rendered Markdown.
* Fix spelling error in budget documentation
Corrected the spelling of 'cheverons' to 'chevrons'.
* Add files via upload
* Remove redundant text in budget.md
* Fix formatting issues in payees.md
* count points script should fetch the release note from the PR directly (#7309)
* get pr release note from PR, not top of master
* note
* [AI] Mobile: Post transaction today on global account lists (#7311) (#7322)
* [AI] Mobile: pass today for Post transaction today on global account lists (#7311)
All Accounts, On budget, and Off budget transaction lists now forward the
today flag to schedule/post-transaction, matching single-account mobile
and desktop behavior.
Made-with: Cursor
* [AI] Add release note for PR 7322 (#7311)
Made-with: Cursor
* [AI] Tighten release note wording for PR 7322 (imperative)
Made-with: Cursor
---------
Co-authored-by: Pranay Mac M1 <pranayseela@yahoo.com>
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: Pranay S <pranayritvik@gmail.com>
Co-authored-by: Pranay Mac M1 <pranayseela@yahoo.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* fix github actions inconsistencies
* fix pinning of transitive deps in eslint-plugin
* drop use of node-fetch in api
* drop md5 dependency in favour of node:crypto
* drop slash
* drop unused top level packages
* add note about node-polyfills warning
* remove unused deps from desktop-client
* drop pegjs types
* note
* drop node-jq
* [AI] Fix unrecoverable UI error after login (#7341)
The crash was in CommandBar.tsx where item.name.toLowerCase() was called
on items with null/undefined names (from custom reports or dashboard
pages with null name columns in the database). Added optional chaining.
Also hardened React Query data hooks to always return safe defaults even
in error states, and guarded $oneof AQL operator against empty arrays
generating invalid SQL.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* [autofix.ci] apply automated fixes
* [AI] Revert hook/compiler changes, keep CommandBar fix, add release notes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* [AI] Default null names to empty string at data source
Instead of optional chaining at the consumer, ensure names are never
null by defaulting at the data source: reportModel.toJS for custom
reports and dashboardQueries for dashboard pages.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* [AI] Fix password login broken when OIDC is enabled (#7331)
The security fix in PR #7155 added an `active = 1` check to
`getLoginMethod()`, which prevented password login when OIDC was the
active auth method. This caused the server to silently reroute password
login requests to the OpenID flow, which fails.
Remove the `active` requirement when the client explicitly requests a
login method — only require the method to exist in the auth table. The
`active` flag still governs the default method via `getActiveLoginMethod()`.
The `/change-password` endpoint security protections (admin role +
password auth_method checks) remain intact.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add release notes for PR #7334
* Update getLoginMethod to validate client-requested login methods against the auth database
Modified the getLoginMethod function to check if the requested login method exists in the auth table before returning it. Updated the corresponding test to reflect that a client-requested method not found in the database will be ignored, ensuring proper handling of login methods.
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* [AI] Pin axios to 1.14.0 to avoid vulnerable 1.14.1
Add yarn resolution to prevent axios from being upgraded to 1.14.1,
which contains a critical vulnerability.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add release notes for PR #7343
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* [AI] Mobile: pass today for Post transaction today on global account lists (#7311)
All Accounts, On budget, and Off budget transaction lists now forward the
today flag to schedule/post-transaction, matching single-account mobile
and desktop behavior.
Made-with: Cursor
* [AI] Add release note for PR 7322 (#7311)
Made-with: Cursor
* [AI] Tighten release note wording for PR 7322 (imperative)
Made-with: Cursor
---------
Co-authored-by: Pranay Mac M1 <pranayseela@yahoo.com>
* [AI] Fix balance_current not syncing to API clients after bank sync
updateAccountBalance() used db.runQuery() (raw SQL) to set
balance_current, which bypasses the CRDT sync layer. This means
when SimpleFIN or GoCardless updates an account's bank balance on
the server, API clients calling api.sync() never receive the change —
balance_current stays null or stale in their local database.
Fix: use db.update() which goes through sendMessages/CRDT, ensuring
balance_current propagates to all synced clients just like other
account fields (name, closed, etc.).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* [AI] Add release notes for PR #7243
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Address review feedback: remove verbose comment and simplify release note
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: L. Warren Thompson <lwarrenthompson@Warren-MBP.local>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* create failing tests to identify schedule bug
* Export SelectedBalance to allow for testing
#Please enter the commit message for your changes. Lines startin
* fix handling of scheduleIds
* create release notes
* add tests for normal transactions to ensure no regressions introduced
* capitalize first letter of release notes