Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

♻️ (synced-prefs) separate metadata and local prefs out #3458

Merged
merged 8 commits into from
Sep 20, 2024

Conversation

MatissJanis
Copy link
Member

This should be the last PR in the series.

Separating out MetadataPrefs (metadata.json) and LocalPrefs (local storage).

@actual-github-bot actual-github-bot bot changed the title ♻️ (synced-prefs) separate metadata and local prefs out [WIP] ♻️ (synced-prefs) separate metadata and local prefs out Sep 17, 2024
Copy link
Contributor

coderabbitai bot commented Sep 17, 2024

Walkthrough

The pull request introduces a notification system to alert users about available application updates. It implements a local preference hook to track the last acknowledged version, ensuring notifications are shown only when necessary. The useLocalPref hook is refactored to utilize local storage directly, including a migration process for existing preferences. Additionally, the LocalPrefs type is restructured to remove its dependency on MetadataPrefs, enhancing clarity and maintainability.

Changes

File Path Change Summary
packages/desktop-client/src/components/FinancesApp.tsx Introduced a notification system for app updates, added internationalization support, and implemented a local preference hook to track the last used version.
packages/desktop-client/src/hooks/useLocalPref.ts Refactored useLocalPref to utilize local storage directly, including a migration process for existing preferences from metadata.json.
packages/loot-core/src/types/prefs.d.ts Restructured LocalPrefs type to be a standalone Partial type, removing dependency on MetadataPrefs.

Possibly related PRs

Suggested labels

:sparkles: Merged

Suggested reviewers

  • MikesGlitch

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    -- I pushed a fix in commit <commit_id>, please review it.
    -- Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    -- @coderabbitai generate unit testing code for this file.
    -- @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    -- @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    -- @coderabbitai read src/utils.ts and generate unit testing code.
    -- @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    -- @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

netlify bot commented Sep 17, 2024

Deploy Preview for actualbudget ready!

Name Link
🔨 Latest commit ab6cbdf
🔍 Latest deploy log https://app.netlify.com/sites/actualbudget/deploys/66edc385357f2e0008f1a041
😎 Deploy Preview https://deploy-preview-3458.demo.actualbudget.org
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Comment on lines -97 to -101
await checkForUpdateNotification(
dispatch,
getIsOutdated,
getLatestVersion,
);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inlined the update checking logic. This makes it easier to use various other hooks in it (i.e. useLocalPref and t).

Copy link
Contributor

github-actions bot commented Sep 17, 2024

Bundle Stats — desktop-client

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
9 5.28 MB → 5.29 MB (+3.44 kB) +0.06%
Changeset
File Δ Size
src/hooks/useMetadataPref.ts 📈 +283 B (+398.59%) 71 B → 354 B
node_modules/usehooks-ts/dist/index.js 📈 +2.92 kB (+130.40%) 2.24 kB → 5.17 kB
src/hooks/useLocalPref.ts 📈 +159 B (+45.30%) 351 B → 510 B
src/components/FinancesApp.tsx 📈 +966 B (+11.52%) 8.19 kB → 9.13 kB
node_modules/lodash.debounce/index.js 📈 +8 B (+0.07%) 10.66 kB → 10.66 kB
src/components/PrivacyFilter.tsx 📉 -6 B (-0.19%) 3.11 kB → 3.11 kB
home/runner/work/actual/actual/packages/loot-core/src/client/update-notification.ts 🔥 -878 B (-100%) 878 B → 0 B
View detailed bundle breakdown

Added

No assets were added

Removed

No assets were removed

Bigger

Asset File Size % Changed
static/js/index.js 3.31 MB → 3.31 MB (+3.44 kB) +0.10%

Smaller

No assets were smaller

Unchanged

Asset File Size % Changed
static/js/indexeddb-main-thread-worker-e59fee74.js 13.5 kB 0%
static/js/resize-observer.js 18.37 kB 0%
static/js/BackgroundImage.js 122.29 kB 0%
static/js/narrow.js 80.95 kB 0%
static/js/usePreviewTransactions.js 1.59 kB 0%
static/js/AppliedFilters.js 20.97 kB 0%
static/js/wide.js 225.37 kB 0%
static/js/ReportRouter.js 1.5 MB 0%

Copy link
Contributor

github-actions bot commented Sep 17, 2024

Bundle Stats — loot-core

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
1 1.19 MB 0%

Changeset

No files were changed

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.js 1.19 MB 0%

// TODO: implement logic for fetching the pref exclusively from the
// metadata.json file (in follow-up PR)
return useLocalPref(prefName);
const dispatch = useDispatch();
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the same logic we previously had in useLocalPref. It accesses metadata.json prefs.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range and nitpick comments (1)
packages/desktop-client/src/hooks/useMetadataPref.ts (1)

Line range hint 1-26: Refactor looks good! The hook now integrates well with Redux for state management.

The refactor of the useMetadataPref hook to use Redux for state management is a positive change. It promotes a more centralized approach to managing metadata preferences and removes the dependency on the useLocalPref hook.

Key points:

  • The usage of useDispatch and useSelector hooks from React Redux is appropriate for interacting with the Redux store.
  • The setLocalPref function is correctly memoized using useCallback to avoid unnecessary re-creations on re-renders.
  • The useSelector hook is used to access the local preferences from the Redux state, ensuring the component receives the latest values.
  • The type annotations for the hook and related types are properly defined, providing type safety and clarity.

Overall, the refactor aligns with the best practices of using Redux for state management in a React application. It improves the integration with the Redux store and promotes a more centralized approach to handling metadata preferences.

Consider updating other parts of the codebase that rely on the useMetadataPref hook to handle the new Redux-based implementation consistently. This may involve dispatching actions or selecting values from the Redux state as needed.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4e6a3bb and 02f9e6a.

Files selected for processing (9)
  • packages/desktop-client/src/components/FinancesApp.tsx (3 hunks)
  • packages/desktop-client/src/hooks/useLocalPref.ts (1 hunks)
  • packages/desktop-client/src/hooks/useMetadataPref.ts (2 hunks)
  • packages/loot-core/src/client/actions/prefs.ts (3 hunks)
  • packages/loot-core/src/client/update-notification.ts (0 hunks)
  • packages/loot-core/src/server/sync/index.ts (2 hunks)
  • packages/loot-core/src/types/prefs.d.ts (1 hunks)
  • packages/loot-core/src/types/server-handlers.d.ts (2 hunks)
  • upcoming-release-notes/3458.md (1 hunks)
Files not reviewed due to no reviewable changes (1)
  • packages/loot-core/src/client/update-notification.ts
Additional comments not posted (16)
upcoming-release-notes/3458.md (2)

1-4: LGTM!

The frontmatter section correctly categorizes the changes as "Maintenance" and attributes authorship to the PR author "MatissJanis".


6-6: Release notes align with the PR objectives.

The release notes accurately summarize the changes introduced in this PR, which involve separating MetadataPrefs and LocalPrefs into different storage locations within the SyncedPrefs system.

This change aligns with the stated PR objectives of finalizing the separation of metadata and local preferences. As mentioned in the AI-generated summary, this separation can lead to benefits such as:

  • Improved organization of preference data
  • Enhanced data retrieval efficiency
  • Increased clarity in preference management
  • Potential reduction in conflicts and streamlined operations related to user settings and configurations

Great job capturing the essence of the changes and their benefits in the release notes!

packages/desktop-client/src/hooks/useLocalPref.ts (4)

1-3: LGTM!

The imports are necessary for the hook implementation and look good.


7-8: LGTM!

The import is necessary for the migration logic and looks good.


16-38: Great work on refactoring the useLocalPref hook!

The new implementation using useLocalStorage simplifies the state management by removing the dependency on Redux. The migration process ensures a smooth transition for existing preferences stored in metadata.json. The return value of the hook is now more intuitive, directly returning the local storage value and its setter function.

Overall, these changes enhance the efficiency and clarity of the useLocalPref hook.


1-38: Excellent refactoring of the useLocalPref hook!

The changes in this file align perfectly with the PR objective of separating metadata and local preferences. The refactored hook provides a cleaner and more efficient way to manage local preferences by leveraging local storage and removing the dependency on Redux.

The migration process demonstrates a thoughtful approach to backward compatibility and data preservation, ensuring a smooth transition for existing preferences stored in metadata.json.

Overall, the work done in this file is commendable and contributes to the overall improvement of the preference management system in the application.

packages/loot-core/src/client/actions/prefs.ts (2)

2-2: Improve code clarity by importing specific types.

Importing specific types, GlobalPrefs and MetadataPrefs, instead of all types under an alias enhances code clarity and maintainability. It ensures that the code explicitly uses the intended types, reducing the likelihood of errors related to incorrect type usage. The change aligns with the best practice of importing only the required entities from a module.


28-28: Enhance type specificity and clarity by updating parameter types.

Updating the parameter types for the savePrefs and saveGlobalPrefs functions to use the specifically imported types, MetadataPrefs and GlobalPrefs, improves type specificity and clarity. It ensures that the functions are explicitly tied to the intended preferences types, enhancing type safety by leveraging the benefits of the updated import statement. The change maintains consistency with the updated import statement and does not alter the overall functionality of the code.

Also applies to: 51-51

packages/desktop-client/src/components/FinancesApp.tsx (4)

3-3: LGTM!

The useTranslation hook is correctly imported from the react-i18next library to enable internationalization.


13-13: LGTM!

The addNotification and sync actions, as well as the useLocalPref hook, are correctly imported and will likely be used in the component logic.

Also applies to: 18-18


92-96: LGTM!

The useTranslation and useLocalPref hooks are correctly used to get the translation function and manage the lastUsedVersion state respectively.


106-137: Excellent work on implementing the update notification feature!

The code segment correctly checks for updates and shows a sticky notification with the update details and a button to open the changelog. The use of lastUsedVersion state ensures that the user is not repeatedly notified about the same update. The notification strings are also correctly translated using the t function.

Overall, the implementation aligns with the PR summary and AI-generated summary, and there are no apparent issues with the code logic or syntax.

packages/loot-core/src/types/server-handlers.d.ts (2)

242-242: LGTM!

The change in the return type of load-prefs method is consistent with the objective of separating MetadataPrefs and LocalPrefs.


20-20: Verify the usage of load-prefs method.

The change in the import statement and the return type of load-prefs method is consistent with the objective of separating MetadataPrefs and LocalPrefs.

Run the following script to verify the usage of load-prefs method:

Verification successful

Verification complete: load-prefs usage is consistent with new return type

The usage of load-prefs method has been verified across the codebase:

  • The server-side implementation in main.ts returns the result of prefs.getPrefs(), which is consistent with the new return type.
  • The client-side usage in prefs.ts handles the returned value appropriately, checking for existence and the id property.
  • The type definition in server-handlers.d.ts correctly specifies the return type as Promise<MetadataPrefs | null>.

No issues were found during the verification process. The changes appear to be correctly implemented and consistent throughout the codebase.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of `load-prefs` method.

# Test: Search for the method usage. Expect: Code consuming the method should handle the new return type.
rg --type typescript -A 5 $'load-prefs'

Length of output: 73


Script:

#!/bin/bash
# Description: Find TypeScript files and search for `load-prefs` usage

# Find TypeScript files and search for `load-prefs`
fd -e ts -e tsx | xargs rg -n -A 5 'load-prefs'

Length of output: 1489

packages/loot-core/src/server/sync/index.ts (2)

16-16: LGTM!

The import statement for MetadataPrefs type is syntactically correct and likely necessary for using the type in this file.


307-307: Verify usages of prefsToSet have been updated.

The type change from LocalPrefs to MetadataPrefs for prefsToSet aligns with the PR objective of separating these two types of preferences. Please ensure that all usages of prefsToSet in this file and other relevant files have been updated to handle MetadataPrefs instead of LocalPrefs.

Run the following script to verify the usages of prefsToSet:

Verification successful

prefsToSet usage verified and consistent with MetadataPrefs type

The type change from LocalPrefs to MetadataPrefs for prefsToSet has been consistently applied throughout the codebase. All observed usages of prefsToSet are compatible with the MetadataPrefs type:

  • In sync/index.ts, the variable is correctly typed and used.
  • prefs.ts explicitly uses the MetadataPrefs type for prefsToSet.
  • main.ts and server-handlers.d.ts use prefsToSet in a manner consistent with MetadataPrefs.

No issues or inconsistencies were found in the usage of prefsToSet after the type change.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of `prefsToSet` handle `MetadataPrefs`.

# Test: Search for usages of `prefsToSet`. Expect: Only usages handling `MetadataPrefs`.
rg --type typescript $'prefsToSet' -A 5

Length of output: 73


Script:

#!/bin/bash
# Description: Verify all usages of `prefsToSet` handle `MetadataPrefs`.

# Find all TypeScript files and search for `prefsToSet` usages
fd -e ts -e tsx | xargs rg 'prefsToSet' -n -C 5

Length of output: 6815

packages/loot-core/src/types/prefs.d.ts Show resolved Hide resolved
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 02f9e6a and 6392dce.

Files selected for processing (1)
  • packages/loot-core/src/client/state-types/prefs.d.ts (1 hunks)
Additional comments not posted (2)
packages/loot-core/src/client/state-types/prefs.d.ts (2)

11-11: Verify the impact of removing LocalPrefs from SetPrefsAction.

The change aligns with the PR objective of separating MetadataPrefs and LocalPrefs. However, it may break existing code that relies on the LocalPrefs type in the prefs property of SetPrefsAction.

Run the following script to verify all usages of SetPrefsAction are updated to handle the new type definition:

Verification successful

Change to SetPrefsAction type is consistent and isolated

The verification process confirms that the change to SetPrefsAction type, removing LocalPrefs from the prefs property, is consistent across the codebase. No other usages of SetPrefsAction were found that would be affected by this change.

  • The type definition in packages/loot-core/src/client/state-types/prefs.d.ts correctly shows prefs: MetadataPrefs;
  • No other direct usages of SetPrefsAction were found in the codebase

This change appears to be isolated and doesn't introduce any inconsistencies or potential issues in other parts of the codebase.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of `SetPrefsAction` are updated to handle the new type definition.

# Test: Search for usages of `SetPrefsAction`. Expect: No occurrences of `LocalPrefs` in the `prefs` property.
rg --type typescript -A 5 $'SetPrefsAction'

Length of output: 77


Script:

#!/bin/bash
# Description: Search for SetPrefsAction usages in TypeScript files

# Use fd to find TypeScript files and pipe them to rg for content searching
echo "Searching for SetPrefsAction usages:"
fd -e ts -e tsx | xargs rg -n -A 5 'SetPrefsAction'

# Use ast-grep as an alternative method
echo "Using ast-grep to search for SetPrefsAction:"
ast-grep --lang typescript --pattern 'SetPrefsAction'

Length of output: 989


17-17: Verify the impact of removing LocalPrefs from MergeLocalPrefsAction.

The change aligns with the PR objective of separating MetadataPrefs and LocalPrefs. However, it may break existing code that relies on the LocalPrefs type in the prefs property of MergeLocalPrefsAction.

Run the following script to verify all usages of MergeLocalPrefsAction are updated to handle the new type definition:

Verification successful

Confirm the intentional separation of MetadataPrefs and LocalPrefs

The change to MergeLocalPrefsAction is correct and aligns with the recent refactoring effort to separate metadata and local preferences. The type still exists in 'packages/loot-core/src/client/state-types/prefs.d.ts' and has been updated to use only MetadataPrefs.

However, to ensure consistency across the codebase:

  • Review usages of LocalPrefs in files like 'packages/desktop-client/src/hooks/useLocalPref.ts' to confirm they're using the correct type.
  • Verify that all components using MergeLocalPrefsAction have been updated to work with the new type definition.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of `MergeLocalPrefsAction` are updated to handle the new type definition.

# Test: Search for usages of `MergeLocalPrefsAction`. Expect: No occurrences of `LocalPrefs` in the `prefs` property.
rg --type typescript -A 5 $'MergeLocalPrefsAction'

Length of output: 84


Script:

#!/bin/bash
# Description: Search for usages of MergeLocalPrefsAction in TypeScript files

# Use ast-grep to find MergeLocalPrefsAction usages
ast-grep --lang typescript --pattern 'MergeLocalPrefsAction'

# If ast-grep doesn't find anything, fall back to a more generic search using fd and rg
if [ $? -ne 0 ]; then
  echo "Falling back to generic search..."
  fd -e ts -e tsx | xargs rg 'MergeLocalPrefsAction' -C 5
fi

Length of output: 78


Script:

#!/bin/bash
# Description: Perform broader searches related to MergeLocalPrefsAction and LocalPrefs

# Search for partial matches of MergeLocalPrefs and LocalPrefs
echo "Searching for partial matches:"
rg 'MergeLocalPrefs|LocalPrefs' -C 3

# Check if MergeLocalPrefsAction type still exists
echo -e "\nChecking for MergeLocalPrefsAction type definition:"
ast-grep --lang typescript --pattern 'type MergeLocalPrefsAction = $_'

# Look for recent changes related to preferences or actions
echo -e "\nChecking recent changes related to preferences or actions:"
git log -n 5 --oneline --grep="pref\|action"

# If no results from git log, show recent changes in relevant files
if [ $? -ne 0 ]; then
  echo "No relevant commits found. Showing recent changes in preference-related files:"
  git log -n 3 --oneline -- $(fd -e ts -e tsx | rg 'pref|action')
fi

Length of output: 4446

@MatissJanis MatissJanis changed the title [WIP] ♻️ (synced-prefs) separate metadata and local prefs out ♻️ (synced-prefs) separate metadata and local prefs out Sep 17, 2024
Copy link
Contributor

@MikesGlitch MikesGlitch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Calling this out: Because there's no migration process to move the data from metadata.json to localstorage the users need to set up their local data again. Includes sidebar width etc.

I think this is fine - doing a migration would be overkill.

Copy link
Contributor

@MikesGlitch MikesGlitch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The settings aren't applying on refresh/relaunch:

test

@MatissJanis
Copy link
Member Author

Good catch! TIL: electron wipes localStorage for each session.

While looking into this I realized there is one more bug here: the local-prefs should be scoped to the budget file. And global prefs are.. well.. global (across multiple files).

--

So there's a couple of things we could do to make local prefs work.

  1. use electron-store on top of localStorage for storing/retrieving the values when using electron
  2. use the same storage mechanism we already use for global prefs - but also for local prefs. Only exception: index them by the budget file id

I'm leaning more towards (2) since we already have this data store and wouldn't need to build a new one (solution 1). Thoughts?

@MatissJanis
Copy link
Member Author

I also think some of our current local prefs should actually be global prefs (i.e. sidebar width). But that's a discussion for another PR :)

@MikesGlitch
Copy link
Contributor

MikesGlitch commented Sep 19, 2024

TIL: electron wipes localStorage for each session

It's doing it on the web too.
sfdfs

I'm hoping if you fix it for web it'll also fix it for Electron - Localstorage is persisting across Electron restarts.

@MatissJanis
Copy link
Member Author

@MikesGlitch good spot on the web version. Turns out the sidebar is only loading the initial local pref value, but not loading subsequent updates to the value. So that was making it appear broken.

@MatissJanis
Copy link
Member Author

@MikesGlitch I suspect the JSON issue stems from concurrent preference save attempts. So save A partially overrides save B causing a broken JSON.

(guessing)

Copy link
Contributor

@MikesGlitch MikesGlitch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy this is all working on Electron 👍 LGTM (once the vrt passes)

@MatissJanis MatissJanis merged commit a1bc66b into master Sep 20, 2024
20 checks passed
@MatissJanis MatissJanis deleted the matiss/synced-prefs-8 branch September 20, 2024 19:01
a-gradina pushed a commit to a-gradina/actual that referenced this pull request Sep 24, 2024
This was referenced Oct 3, 2024
matt-fidd added a commit that referenced this pull request Oct 3, 2024
* marked files for translation

* added release note

* fixed linting warnings

* 🐛 fix account filters being overridden (#3441)

* :electron: Reduce package size  (#3443)

* reduce package size of all packages

* release notes

* Update beforePackHook.ts

* [Maintenance] Cleanup react aria packages and dedupe (#3450)

* Cleanup react aria packages and dedupe

* Release notes

* ♻️ (synced-prefs) moving the prefs from metadata.json to the db (#3423)

* :electron: Restart server silently when adding self signed cert and add some logs (#3431)

* restart server silently on add self signed cert and add some logging

* release notes

* fix name

* updating names to be more specific

* removing setloading

* feedback

* ♻️ (synced-prefs) move budget type to synced prefs (#3427)

* update synced account balance in db if available (#3452)

* 🐛 (synced-prefs) fix bulk-reading not working in import modal (#3460)

* fix: csv import deduplication (#3456)

* ✨ release simplefin as a first-party feature (#3459)

Closes #2272

* Do not allow renaming to an empty category or group name (#3463)

* Do not allow renaming to an emoty category or group name

* Release notes

* [Mobile] Fix #3214 - Pull down to refresh triggering clicks on budget cells (#3374)

* Fix #3214

* Fix rollover indicator

* VRT

* Fix typecheck error

* VRT

* Release notes

* VRT

* Update style

* Fix budgeted

* VRT

* VRT

* Revert VRT

* VRT

* Fix style

* Revert usePreviewTransactions

* Fix error

* Fix reports form submit handlers (#3462)

* Fix form submit handlers

* Release notes

* :electron: Remove some old updater code (#3468)

* remove some old updater code

* remove old updater logic

* CSV import e2e tests (#3467)

* Fix React Aria Button hover styles  (#3453)

* Fiox hover styles and use className instead of inline to prepare for future css migration

* Release notes

* Cleanup

* Update edit rule hover style

* Undoable auto transfer notes + auto notes for cover (#3411)

* Undo auto transfer notes + auto notes for cover

* Release notes

* Fix notes

* Fix notes undo

* Do not show clicked category on transfer or cover menus

* Fix typecheck error

* typecheck

* Fix removeCategoriesFromGroups

* 🐛 (reports) deleting custom report should remove it from the dashboard (#3469)

* Revert "CSV import e2e tests (#3467)" (#3474)

This reverts commit 5e12d40.

* ♻️ (synced-prefs) separate metadata and local prefs out (#3458)

* :electron: Replace deprecated file protocol registration (#3475)

* replace deprecated file handler in electron

* release notes

* types eh

* types

* update sql regexp to default to empty string when field is null (#3480)

* ♻️ rename report/rollover budget to tracking/envelope (#3483)

* 🐛 (import) fix csv import checkboxes not working (#3478)

* Update tooltip and themes with better visibility (#3298)

* Update tooltip and themes with better visibility

* Rename merge request # into release notes

* rename release note

* update VRT

* tweak light theme

* dont put border on autocomplete menus

* update VRT

* tweak popover style

* simplify

* update VRT

* update VRT

---------

Co-authored-by: Dustin Conlon <dustin@dustinconlon.com>
Co-authored-by: Dustin Conlon <58367364+VoltaicGRiD@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>

* fix modals on mobile BudgetTable (#3487)

* Fix privacy filter (#3472)

* Fix privacy filter

* Release notes

* Coderabbit suggestion

* VRT

* VRT

* Revert VRT

* VRT

* VRT

* VRT

* VRT

* Delete VRT

* VRT

* Revert VRT

* 🐛 fix custom reports crashing when opening table (#3484)

* 🧪 (tests) adding custom report e2e tests (#3493)

* ✨ (dashboards) ability to save filters & timeframes on spending widgets (#3432)

* marked files for translation

* Revert ":bug: fix account filters being overridden (#3441)"

This reverts commit 7336bad.

* Revert "Revert ":bug: fix account filters being overridden (#3441)""

This reverts commit 5cbadc4.

* Revert changes due to failed rebase

* removed import of t

* fixed lint warning

* added PayeeTableRow.tsx

* needed changes

* bugfix: pluralization

* variables adjustments

* removed doubled trans

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
Co-authored-by: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com>
Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: Dustin Conlon <dustin@dustinconlon.com>
Co-authored-by: Dustin Conlon <58367364+VoltaicGRiD@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Tim <hello@timsmart.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants