Catch up to latest changes#90
Merged
code-with-jov merged 28 commits intoopsx_pp_13_99from Mar 21, 2026
Merged
Conversation
…s environments (actualbudget#7202) * [AI] Fix navigator is not defined error in @actual-app/api for Node.js environments Add platform.api.ts to provide Node.js-safe defaults for platform detection, which the API's Vite config resolves before the browser-only platform.ts. Also guard navigator access in environment.ts isElectron() function. Fixes actualbudget#7201 https://claude.ai/code/session_015Xz2nHC12pNkADGjGZnSXd * Add release notes for PR actualbudget#7202 --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…lbudget#7191) * [AI] Fix Spending Analysis budget table for tracking budgeting Made-with: Cursor * [autofix.ci] apply automated fixes * [AI] Add release note for Spending Analysis tracking budgeting fix Made-with: Cursor * [autofix.ci] apply automated fixes * [AI] Address CodeRabbit nitpicks: use typed narrowing instead of assertion for budgetType Made-with: Cursor --------- Co-authored-by: Pranay Mac M1 <pranayseela@yahoo.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…ctualbudget#7188) * Add a confirmation model when merging payees in /payee * Added a confirmation modal when users merge payees in /payees * Address coderabbit comments * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…ctualbudget#7200) * [AI] Publish loot-core (@actual-app/core) nightly first in workflow * [autofix.ci] apply automated fixes * Refactor imports and update configuration - Updated .oxfmtrc.json to change "parent" to ["parent", "subpath"]. - Removed unnecessary blank lines in various TypeScript files to improve code readability. - Adjusted import order in reports and rules files for consistency. * Add workflow steps to pack and publish the core package nightly * Remove nightly tag from npm publish command in workflow for core package * Update post-build script comment to reflect correct workspace command for loot-core declarations --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…lbudget#7195) * [AI] Remove @actual-app/crdt Vite aliases and redundant config * Release notes * Enhance CRDT package configuration and clean up Vite settings * Added `publishConfig` to `crdt/package.json` to specify exports for types and default files. * Removed unused `crdtDir` references from `vite.config.ts` and `vite.desktop.config.ts` to streamline configuration.
* Upgrade to Vite 8 * Add release notes * PR feedback * [autofix.ci] apply automated fixes * PR feedback * fix: inject process.env * Restore deleted release note * Clean up and typecheck * Fix dev server * Fix type error * Fix tests * PR feedback --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
) * [AI] fix: preserve schedule link when merging transactions When merging two transactions where one is linked to a schedule, the schedule field was not included in the merge update, causing the schedule association to be silently dropped. This resulted in duplicate transactions and incorrect "Due" status for scheduled transactions. Add `schedule: keep.schedule || drop.schedule` to both the normal merge path and the subtransaction merge path, matching the existing fallback pattern used for payee, category, notes, etc. Add three test cases covering: - Schedule preserved from dropped transaction when kept has none - Kept transaction's schedule takes priority when both have one - Schedule preserved when merging manual scheduled with banksynced Fixes actualbudget#6997 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add release notes for PR actualbudget#7177 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
) * [AI] Fix OIDC privilege escalation in /change-password endpoint Add admin role check and password auth_method session check to prevent non-admin or OIDC-authenticated users from changing the server password. Previously, any authenticated user could overwrite the password hash and then login via password method to obtain an ADMIN session. https://claude.ai/code/session_01Wne9FY2QnKp6JF7g61B1Sn * Add release notes for PR actualbudget#7207 --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* bump @types/react * note
* attempt to enable sync when multiple tabs are open * allow multiple tabs to work * release notes * rehome the host if the tab closes * ensure new tabs always receive failure messages by broadcasting them on interval * reject after retries are exhausted * forwarding the logs from the worker to the main browser * [autofix.ci] apply automated fixes * add preflight fetch from main thread to server endpoint to trigger permission prompt if required * remove the log prefix for cleaner logs * adding heardbeat to detect closed tabs so they can be removed from the list * store failure payload and broadcast for new tabs after timeout is cleared * if a tab closes a budget, force other tabs to go to the budget list screen * fix safari by detecting crossoriginisolated as a dependency for shared worker * all ios to fallback to non-shared-worker implemenation * coordinator and all backend work going through a leader tab to enable ios * electing new leader tab when oone tab closes or is refreshed * logic for standalone tabs to rejoin shared workers when on same budget * remove the preflight request, shouldnt be needed now the code runs on the main process * handling brand new tabs going to open budgets that are current standalone with no leader * allowing budgets to be closed without kickother others by transfering leadership to remaining oopened tabs * remove unnedd comments * change approach slightly - no more standalone, now every budget gets leader promotion automatically) * adding tests and fixed minor bug to do with deleting budget with multiple tabs open * fix worker not loading * trouble with ts - moving to js * reintroduce ts for the worker --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Migrate `get-next-package-version.js` to TypeScript * Add release notes * Stronger type check * Fix step ordering * Fix typo * Fix missed ordering
* react-spring (10.0.0 -> ^10.0.3) * note * fix VRT * fix more animations * fix budget month colouring
…ctualbudget#7229) * [AI] Add yarn constraints to enforce consistent dependency versions Adds a `yarn.config.cjs` that uses Yarn 4's built-in constraints feature to detect when the same dependency is declared with different version ranges across workspaces. Workspace protocol references and peerDependencies are excluded from the check. Also adds a `yarn constraints` convenience script and the `@yarnpkg/types` dev dependency for type-checked constraint authoring. https://claude.ai/code/session_01B1xRjZXn6b18anZjo8cbqb * Add release notes for PR actualbudget#7229 * Add constraints job to GitHub Actions workflow * Fix constraints --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add Formula Rule function to set-split-amount fixed-amount and fixed-percent actions. * Hide formula UI for remainder splits and simplify icon logic * Guard against undefined options in set-split-amount else‑branch * Show split amount formula in rules list * Update tests based on changes introduced in 7fa1ff2 * Change set-split-amount formula feature to work as a separate allocation method. * [autofix.ci] apply automated fixes * Update types for parent_amount * Use a semantic non-interactive element instead of Button * import organization * [autofix.ci] apply automated fixes * Fix tests * Correctly hide when feature is disabled. Update release notes. * Add tooltip documenting parent_amount formula variable Change parent_amount to return in cents so it is consistent with amount variable Ensure balance variable is available in set-split-amount formula Clean up parent_amount deletion to be consistent with balance * Delete balance and parent_amount from subtransactions * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: youngcw <calebyoung94@gmail.com>
* feat(formula): Add QUERY_BUDGET function for budget-aware formula reporting * docs(release): Add QUERY_BUDGET feature release notes * refactor: decompose into multiple functions and support goal dimension * [autofix.ci] apply automated fixes * refactor: simplified code * [autofix.ci] apply automated fixes * updated release notes --------- Co-authored-by: Your Name <tomgriffin@localhost> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* add options to override reimportDeleted * doc and default in ui to false * pr note * period * wording * [autofix.ci] apply automated fixes * docs clarity * actually test default behavior * Update upcoming-release-notes/6926.md Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv> * use new ImportTransactionOpts type for consistency * Release note wording Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* [AI] Remove development theme Delete the development theme that was only available in non-production environments. Removes the theme file, its registration in the theme registry, type definitions, preference validation, ThemeSelector icon mapping, and Storybook configuration. https://claude.ai/code/session_01A1aEippeWppuwoRSCBPwby * Add release notes for PR actualbudget#7232 --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…lbudget#7038) * Initial commit for concentric donut chart implementation * [autofix.ci] apply automated fixes * Update upcoming-release-notes/7038.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Fix coderabbit comments (Recalculated total to avoid hidden cats, remove tooltip, add proper types) * Update packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Fix zero total group * lint issues fix * Fix lint issues * Empty commit to retriger the process * [autofix.ci] apply automated fixes * Removed line betweeen arc and label. I beleive the view is cleaner this way. * Fixed line for outer donut * split active shape for concentric circles to avoid impacting original chart * [autofix.ci] apply automated fixes * Fixing mid point to align with mid point on inner circle * 1- make line always start inside the core circle 2- fix bug where inner circle label was showing below the outer circle * - Fixed Dashboard issue when height too low. - Rewrite of the activeShape part for simplicity. - Centralize radius calculation. - Provide differnt dimensions for compact vs standard rendering - fix mid line point to auto fix at 70% of the inner radius - More readable code * Update VRT screenshots Auto-generated by VRT workflow PR: actualbudget#7038 * Fixed distance issue for arc on single ring. * [autofix.ci] apply automated fixes * Update VRT screenshots Auto-generated by VRT workflow PR: actualbudget#7038 * Update packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Fixing Code Rabbit Comments * rerunning tests * Added Group click through passing all categories iwth a workaorund on showActivity --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* @types/node (^22.19.10 → ^22.19.15) * baseline-browser-mapping (^2.9.19 → ^2.10.0) * eslint (^9.39.2 → ^9.39.3) * lage (^2.14.17 → ^2.14.19) * lint-staged (^16.2.7 → ^16.3.2) * minimatch (^10.1.2 → ^10.2.4) * oxlint (^1.47.0 → ^1.51.0) * rollup-plugin-visualizer (^6.0.5 → ^6.0.11) * @chromatic-com/storybook (^5.0.0 → ^5.0.1) * @storybook/addon-a11y (^10.2.7 → ^10.2.16) * @storybook/addon-docs (^10.2.7 → ^10.2.16) * @storybook/react-vite (^10.2.7 → ^10.2.16) * eslint-plugin-storybook (^10.2.7 → ^10.2.16) * storybook (^10.2.7 → ^10.2.16) * @codemirror/autocomplete (^6.20.0 → ^6.20.1) * @codemirror/lang-javascript (^6.2.4 → ^6.2.5) * @codemirror/language (^6.12.1 → ^6.12.2) * @rolldown/plugin-babel (~0.1.7 → ~0.1.8) * @swc/core (^1.15.11 → ^1.15.18) * @swc/helpers (^0.5.18 → ^0.5.19) * @tanstack/react-query (^5.90.20 → ^5.90.21) * @uiw/react-codemirror (^4.25.4 → ^4.25.7) * hyperformula (^3.1.1 → ^3.2.0) * i18next (^25.8.4 → ^25.8.14) * i18next-parser (^9.3.0 → ^9.4.0) * react-i18next (^16.5.4 → ^16.5.6) * react-virtualized-auto-sizer (^2.0.2 → ^2.0.3) * fs-extra (^11.3.3 → ^11.3.4) * @r74tech/docusaurus-plugin-panzoom (^2.4.0 → ^2.4.2) * lru-cache (^11.2.5 → ^11.2.6) * nodemon (^3.1.11 → ^3.1.14) * eslint-plugin-perfectionist (^4.15.1 → ^5.6.0) * downshift (9.0.10 → 9.3.2) * react-router (7.13.0 → 7.13.1) * @easyops-cn/docusaurus-search-local (^0.52.3 → ^0.55.1) * peggy (5.0.6 → 5.1.0) * @types/supertest (^6.0.3 → ^7.2.0) * note
* actions/setup-node * actions/cache * actions/checkout * docker/* * actions/*-artifact * actions/stale * others * note
* [AI] Add @actual-app/cli package New CLI tool wrapping the full @actual-app/api surface for interacting with Actual Budget from the command line. Connects to a sync server and supports all CRUD operations across accounts, budgets, categories, transactions, payees, tags, rules, schedules, and AQL queries. * Refactor CLI options: replace `--quiet` with `--verbose` for improved message control. Update related configurations and tests to reflect this change. Adjust build command in workflow for consistency. * Refactor tests: streamline imports in connection and accounts test files for improved clarity and consistency. Remove dynamic imports in favor of static imports. * Enhance package.json: Add exports configuration for module resolution and publish settings. This includes specifying types and default files for better compatibility and clarity in package usage. * Update package.json exports configuration to support environment-specific module resolution. Added 'development' and 'default' entries for improved clarity in file usage. * Enhance CLI functionality: Update configuration loading to support additional search places for config files. Refactor error handling in command options to improve validation and user feedback. Introduce new utility functions for parsing boolean flags and update related commands to utilize these functions. Add comprehensive tests for new utility functions to ensure reliability. * Update CLI TypeScript configuration to include Vitest globals and streamline test imports across multiple test files for improved clarity and consistency. * Update CLI dependencies and build workflow - Upgrade Vite to version 8.0.0 and Vitest to version 4.1.0 in package.json. - Add rollup-plugin-visualizer for bundle analysis. - Modify build workflow to prepare and upload CLI bundle stats. - Update size comparison workflow to include CLI stats. - Remove obsolete vitest.config.ts file as its configuration is now integrated into vite.config.ts. * Enhance size comparison workflow to include CLI build checks and artifact downloads - Added steps to wait for CLI build success in both base and PR workflows. - Included downloading of CLI build artifacts for comparison between base and PR branches. - Updated failure reporting to account for CLI build status. * Update documentation to replace "CLI tool" with "Server CLI" for consistency across multiple files. This change clarifies the distinction between the command-line interface for the Actual Budget application and the sync-server CLI tool. * Refactor configuration to replace "budgetId" with "syncId" across CLI and documentation * Enhance configuration validation by adding support for 'ACTUAL_ENCRYPTION_PASSWORD' and implementing a new validation function for config file content. Update documentation to clarify error output format for the CLI tool. * Enhance configuration tests to include 'encryptionPassword' checks for CLI options and environment variables, ensuring proper priority handling in the configuration resolution process. * Update nightly versioning script to use yarn * Align versions --------- Co-authored-by: Claude <noreply@anthropic.com>
* Add Notes to Monthly Budget Cell Changed Modal menus layout to follow month menu on mobile * Fixed rebase errors * Update VRT screenshots Auto-generated by VRT workflow PR: actualbudget#6620 * Addressed youngcw's comments (notes id format, notesButton defaultColor and modal layout) * Update VRT screenshots Auto-generated by VRT workflow PR: actualbudget#6620 * Updated mobile budget menu modal page model --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: youngcw <calebyoung94@gmail.com>
…tualbudget#7236) * [AI] Add baseTheme and overrideCss support to custom theme system Add baseTheme field to InstalledTheme allowing users to choose which built-in theme (light/dark/midnight) serves as the base for custom themes. Add overrideCss field for layering additional CSS overrides on top of a catalog theme's CSS. ThemeStyle now respects the baseTheme field when rendering base variables. CustomThemeStyle renders both cssContent and overrideCss layers. https://claude.ai/code/session_01PPAkAQB4xfeFCQbmNwvn2k * [AI] Add base theme selection and CSS override layering for custom themes - Add baseTheme field to CatalogTheme and InstalledTheme types, allowing catalog themes to declare which built-in theme (light/dark/midnight) they are based on - Add overrideCss field to InstalledTheme for layering additional CSS overrides on top of a catalog theme - Update ThemeStyle to render the correct base theme colors when a custom theme specifies a baseTheme - Update CustomThemeStyle to render both cssContent and overrideCss layers - Update ThemeInstaller UI: catalog selection and free-text CSS now coexist so users can pick a catalog theme (e.g. Matrix) and apply extra overrides - Add baseTheme to all entries in customThemeCatalog.json - Dynamic label: shows "Additional CSS overrides:" when a catalog theme is selected, "or paste CSS directly:" otherwise https://claude.ai/code/session_01PPAkAQB4xfeFCQbmNwvn2k * [AI] Remove baseTheme from catalog; derive base from mode instead Base theme is now automatically determined from the catalog theme's mode field: light mode themes use "light" as base, dark mode themes use "dark" as base. No separate baseTheme field needed in catalog. https://claude.ai/code/session_01PPAkAQB4xfeFCQbmNwvn2k * Refactor ThemeInstaller to handle pasted CSS more gracefully * Enhance ThemeInstaller and CustomThemeStyle to support CSS validation for both content and overrides. Refactor pasted CSS handling for improved clarity and efficiency. * Implement validateAndCombineThemeCss function to streamline CSS validation and combination for light and dark themes in CustomThemeStyle. Refactor existing CSS handling to improve clarity and efficiency. * Add cachedCatalogCss state to ThemeInstaller for improved CSS handling * Update ThemeInstaller tests to ensure pasted CSS is preserved when a catalog theme is selected and modify onInstall behavior to correctly handle empty CSS content. Refactor test cases for clarity and accuracy. * Enhance ThemeInstaller to support dynamic baseTheme selection based on catalog theme or user preference. Refactor CSS installation logic to prioritize selected catalog themes and improve handling of pasted CSS. Update dependencies in the installTheme function for better clarity and functionality. --------- Co-authored-by: Claude <noreply@anthropic.com>
…ctualbudget#7240) * [AI] Improve CLI query command with new flags, subcommands, and docs Add --last, --count, --where, --offset, --group-by flags and field:desc order-by syntax to make the query command more usable for both humans and AI agents. Add query tables/fields subcommands for schema discovery. Expand CLI and ActualQL documentation with comprehensive examples. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [AI] Fix parseOrderBy empty field validation and misleading aggregate docs Validate that order-by field names are non-empty (e.g. ":desc" now throws a clear error). Move AVAILABLE_TABLES before first use. Update group-by examples in CLI help text and docs to use --file with proper aggregate JSON instead of misleading --select with plain field names. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [autofix.ci] apply automated fixes --------- 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] Add post-merge hook to auto-install when yarn.lock changes Mirrors the existing post-checkout hook behavior: after a git pull or merge, if yarn.lock changed between ORIG_HEAD and HEAD, automatically runs yarn install to keep dependencies in sync. https://claude.ai/code/session_01JHoMhGANLTc1q67s1dUHrt * Add release notes for PR actualbudget#7248 --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Related issue(s)
Testing
Checklist