Commit Graph

1490 Commits

Author SHA1 Message Date
Juan José Mata
e8b54bc2ca Not sure how skipping worked for me the first time 2025-08-08 02:08:05 +00:00
Sholom Ber
a088a7ce41 Fix SimpleFin transaction syncing and clean up debug logging
- Fix transaction creation to use Entry/entryable pattern instead of creating Transaction directly
- Handle both string and symbol keys in transaction data using with_indifferent_access
- Fix amount parsing to use BigDecimal instead of converting to cents
- Use plaid_id field for external ID storage to prevent duplicates
- Remove excessive debug logging while keeping essential error logging

SimpleFin transaction sync now works correctly, creating proper Entry records
with accurate dollar amounts and preventing duplicate transactions.
2025-08-07 20:34:58 -04:00
Sholom Ber
271720055d Revert "Gate SimpleFin option behind US region check"
This reverts commit 43b339940b.
2025-08-07 19:49:17 -04:00
Juan José Mata
8776faf006 Add option to "skip" adding an account 2025-08-07 16:05:41 -07:00
Sholom Ber
7685d950c4 Fix trailing whitespace (rubocop auto-fix) 2025-08-07 16:56:27 -04:00
Sholom Ber
e92751d7ee Fix tests for subtype delegation to accountable models
The subtype attribute was moved from Account to individual accountable models
to enable users to select specific subtypes during SimpleFin account import.
This change allows for better account categorization and more precise display
of account types (e.g., "HSA" instead of generic "Cash").

However, tests and the PlaidAccount processor weren't updated to work with
the new delegation pattern. This commit fixes:

- PlaidAccount::Processor now sets subtype on accountable and uses enrichable
  pattern to respect user locks
- PropertiesController updated to handle subtype via accountable_attributes
- Test fixtures corrected to set subtype on accountable models not Account
- Tests updated to work with the delegated subtype pattern

All originally failing tests now pass:
- PropertiesControllerTest#test_updates_property_overview
- PlaidAccount::ProcessorTest (2 failing tests)
- AccountTest#test_gets_short/long_subtype_label
2025-08-07 16:55:13 -04:00
Sholom Ber
7fee3fe45c Address all Gemini code review feedback for SimpleFin integration
- Remove debug console.log statements from JavaScript controller
- Consolidate duplicate SimpleFin account creation methods into single method
- Refactor SimplefinItemsController to reduce complexity with helper methods
- Fix HTTParty thread-safety by moving SSL options to class level
- Remove redundant HTTParty options from individual requests
- Add proper error logging for invalid currency URIs
- Extract sync button path logic to AccountsHelper#sync_path_for method
- DRY up repeated subtype dropdown code with reusable partial and data structure

All SimpleFin tests passing (16/16). Code quality improvements maintain
backward compatibility while following Rails best practices.
2025-08-07 16:19:11 -04:00
Sholom Ber
1d6718833a Fix critical data integrity issue in SimpleFin date parsing
- Remove fallback to Date.current when transaction dates fail to parse
- Raise ArgumentError instead to ensure data integrity
- Log detailed error messages for debugging
- Skip transactions with invalid dates rather than using incorrect dates
- Prevents hard-to-debug issues with balances and financial reports
2025-08-07 16:05:58 -04:00
Sholom Ber
4f6b738bb6 Refactor SimpleFin controller to use model method
- Move SimpleFin item creation logic from controller to Family#create_simplefin_item!
- Remove duplication between controller and model
- Simplify controller to focus on web request/response handling
- Remove unused simplefin_provider method
- Follow Rails best practices for fat models, skinny controllers
2025-08-07 16:02:44 -04:00
Sholom Ber
43b339940b Gate SimpleFin option behind US region check
SimpleFin is primarily for North American financial institutions,
so only show the option when US banking connections are available.
2025-08-07 15:48:33 -04:00
Sholom Ber
00cb130ef0 Remove unused SimpleFin account type mapping logic
- Remove map_simplefin_type_to_accountable_type method (no longer needed)
- Remove create_from_simplefin_account method (manual setup only)
- Simplify account type selection UI to not pre-select defaults
- Update processor to log error if account missing (safety check)
- All account creation now goes through manual user selection flow
2025-08-07 15:38:26 -04:00
Sholom Ber
0c14cca029 Update SimpleFin User-Agent to use Sure Finance branding 2025-08-07 15:33:33 -04:00
Sholom Ber
aea9b0647b Remove SimpleFin demo file with outdated setup token 2025-08-07 15:32:28 -04:00
Sholom Ber
9e557df68a Fix SimpleFin integration bugs and improve code quality
- Fix upsert method to handle string/symbol keys with indifferent access
- Add missing show route and view for SimpleFin items
- Fix test fixtures to use correct user references
- Update test data to match real-world JSON format (string keys, BigDecimal)
- Apply code formatting and linting fixes (rubocop, erb_lint)
- Ensure all SimpleFin tests pass (16/16 passing)
2025-08-07 15:20:27 -04:00
Sholom Ber
332f5b0018 Fix dark mode compatibility for SimpleFin UI components
- Replace hardcoded colors with design system tokens throughout SimpleFin views
- Fix method selector hover states to use bg-surface instead of bg-gray-50
- Update SimpleFin form to use styled_form_with and standard form patterns
- Replace custom button styling with design system button components
- Fix info boxes and containers to use bg-surface and border-primary
- Replace hardcoded green/blue colors with text-primary, text-secondary, text-link
- Remove custom text area styling to allow form builder defaults (dark mode support)

All SimpleFin components now properly adapt to both light and dark themes
with correct contrast and visibility.
2025-08-07 13:44:24 -04:00
Sholom Ber
dbcbf89f4b Complete subtype selection for SimpleFin accounts
- Add subtype database columns to all accountable models
- Create Stimulus controller for dynamic subtype dropdown interaction
- Add delegation from Account to accountable subtype for clean API access
- Update SimpleFin account setup form with working subtype selection
- Fix account display to show proper subtype labels instead of generic "Cash"

Users can now select both account type and subtype during SimpleFin import,
and the selected subtypes are properly saved and displayed in the UI.
2025-08-07 13:23:28 -04:00
Sholom Ber
81924815fc Fix account show page for SimpleFin accounts
- Update sync button routing to handle SimpleFin accounts
- Add SimpleFin item sync path alongside existing Plaid support
- Prevent NoMethodError when viewing SimpleFin-linked accounts
- Support proper sync routing for Plaid, SimpleFin, and manual accounts
2025-08-07 12:48:02 -04:00
Sholom Ber
2caba0a00b Add tests for SimpleFin integration
- Add SimplefinItem model tests with fixtures
- Add SimplefinAccount model tests
- Add SimplefinItemsController tests
- Include test coverage for sync and account creation
2025-08-07 12:40:41 -04:00
Sholom Ber
71d720b25b Add user account type selection workflow
- Add pending_account_setup field to SimpleFin items
- Enable pausing sync for user account type selection
- Allow users to choose account types during import
- Prevent automatic account creation until user confirms
2025-08-07 12:40:27 -04:00
Sholom Ber
35693e51f0 Add SimpleFin user interface components
- Create SimpleFin connection management views
- Add account setup modal with type selection
- Include connection form with token input and instructions
- Update accounts index to display SimpleFin items
- Add SimpleFin option to account method selector
- Include SimpleFin in settings navigation
2025-08-07 12:40:14 -04:00
Sholom Ber
18b69a490c Add SimpleFin controllers and routing
- Create SimplefinItemsController with CRUD operations
- Add account setup flow with user type selection
- Include sync management and error handling
- Update AccountsController to display SimpleFin items
- Add routes for SimpleFin item management and setup
2025-08-07 12:40:01 -04:00
Sholom Ber
30d0b25e1d Update core models for SimpleFin integration
- Add SimpleFin account creation methods to Account model
- Implement intelligent account type mapping from names
- Add SimpleFin linkable functionality to Account
- Include SimpleFin items in Family model associations
- Support account creation with user-selected types
2025-08-07 12:39:47 -04:00
Sholom Ber
8497703518 Implement SimpleFin API client and data models
- Add SimplefinItem model with sync capabilities and encryption
- Add SimplefinAccount model for account data mapping
- Implement Provider::Simplefin API client with token exchange
- Add SimpleFin protocol support with proper error handling
- Include sync jobs, importers, and processors for data flow
- Add family SimpleFin connectivity mixin
2025-08-07 12:39:29 -04:00
Sholom Ber
9561e73e17 Add SimpleFin database schema
- Create simplefin_items table for SimpleFin connections
- Create simplefin_accounts table for account metadata
- Add simplefin_account_id to accounts table for linking
- Add external_id to transactions for deduplication
- Enable encrypted storage of SimpleFin access URLs
2025-08-07 12:39:15 -04:00
Sholom Ber
df7a137a93 Add HTTParty gem for SimpleFin API integration
- Add HTTParty gem for making HTTP requests to SimpleFin API
- Required for SimpleFin protocol implementation
2025-08-07 12:39:02 -04:00
Juan José Mata
f6dde1a098 Add Langfuse-based LLM observability (#86)
* Add Langfuse-based LLM observability

* Document Langfuse configuration

* Don't hardcode model in use
2025-08-06 23:23:07 +02:00
Juan José Mata
099425d240 First quick Sure rebrand (#74)
* First cut of smallest rebrand, pending icons

* Leave SQL schema tokens/user names the same for now

* First batch of logos

* Release notes/what's new

* /releases missing

* redirect_uri for sureapp://

* Padded logo

* Test the correct /releases URL

* Missed a few mobile URIs

* Some icons/asssets from /website/ repo

* Seed/sample data user @sure.local now

* New screenshot

* Want to keep their legal "boilerplate" from the upstream repo
v0.6.2
2025-08-05 23:35:01 +02:00
Musab Ustun
64c62bffbc chore: Add Complete Turkish Localization and Improvements Based on Code Review (#31)
* Turkish language files added

* Apply suggestions from code review

Expensive to use LLMs as linters, but hey!

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Negative language files have been added for Turkish.

* Sure naming

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Sure naming

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Sure naming

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Sure naming

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Sure naming

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Sure naming

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

* Sure naming

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

---------

Signed-off-by: Juan José Mata <jjmata@jjmata.com>
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Juan José Mata <jjmata@jjmata.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2025-08-05 22:50:58 +02:00
Matthieu Ev
dcd0fdce8f Better Sankey chart (#67)
* feat: added hover effect on the sankey chart

* small tweek for the opacity

* Update app/javascript/controllers/sankey_chart_controller.js

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Matthieu Ev <95125079+matthieuEv@users.noreply.github.com>

* Update app/javascript/controllers/sankey_chart_controller.js

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Matthieu Ev <95125079+matthieuEv@users.noreply.github.com>

* feat: add tooltip to sankey chart

* feat: switch sankey-graph and net-worth-graph

---------

Signed-off-by: Matthieu Ev <95125079+matthieuEv@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-08-05 22:25:55 +02:00
Rupert28
47da993a16 README Cleanup: Fix typos, grammar, and clarity (#79)
* Fix typos, grammar, and clarity in README

* rm whitespace; Update README.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Rupert28 <104603523+Rupert28@users.noreply.github.com>

* rm duplicate line; Update README.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Rupert28 <104603523+Rupert28@users.noreply.github.com>

* Added trailing whitespace

---------

Signed-off-by: Rupert28 <104603523+Rupert28@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-08-05 20:46:54 +02:00
Matthieu Ev
ef7d736409 fix: update account sidebar tab (#81) 2025-08-05 20:09:57 +02:00
Himank Dave
eba42e2f71 build: allow main branch publishing and add comprehensive OCI metadata for multi-arch images (#65)
* feat(ci): add OCI annotations and metadata to multi-arch images

- Include created, source, revision, ref-name, vendor & license
- Add title and description for Sure Rails app multi-arch image
- Dynamically annotate version when tag builds are triggered

* chore(ci): add nightly tag with weekday pattern to tag config

* fix(ci): allow publish workflow to push images from main branch

- Update conditional checks to include refs/heads/main
- Reflect new condition in workflow comments for clarity

* fix(ci): set image version label only for tag builds in metadata

* fix(ci): avoid quotations being passed as CLI argument

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Himank Dave <93311724+steadyfall@users.noreply.github.com>

* refactor(ci): remove deprecated `::set-output` command

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Himank Dave <93311724+steadyfall@users.noreply.github.com>

---------

Signed-off-by: Himank Dave <93311724+steadyfall@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-05 00:41:05 +02:00
Matthieu Ev
b3af64dce1 fix: show user small picture and fallback when loading (#63)
* fix: show user small picture and fallback when loading

* fix: add alt to avatar

* fix: fixed version
2025-08-03 08:57:00 +02:00
Himank Dave
a14b0535ec feat: introduce multi-arch build matrix and OCI-compliant multi-arch images (#46)
* chore: update Docker image description to 'Sure'

* chore: adjust Docker metadata tags in publish workflow

- Disable automatic 'latest' tag generation
- Add 'nightly' tag for scheduled builds

* feat: add optional 'push' input to control image publishing

- Allow toggling push behavior via workflow input
- Allow push to 'ghcr.io' on tags, scheduled events, or when
	input is true

* chore: switch Docker cache to use registry-based build cache

* feat(ci): add multi-arch matrix image build & manifest merge

- Build and push images for amd64 and arm64 with platform-specific cache
- Export and upload image digests for each platform
- Merge digests into multi-arch manifest with retry logic
- Remove QEMU setup, use platform-specific runners
- Dynamic tag configuration for nightly, stable, and SHA tags

* chore(deps): pin external actions to specific minor versions

* Bump actions/checkout to v4.2.0
* Bump docker/setup-buildx-action to v3.10.0
* Bump docker/login-action to v3.3.0
* Bump docker/metadata-action to v5.6.0
* Bump docker/build-push-action to v6.16.0

* chore(ci): improve publish workflow robustness

- Set artifact upload to error if no files found & limit retention to 1 day

* chore(ci): enable OCI media types in Docker build outputs

* feat(ci): add scheduled nightly publish at 01:30 UTC

* chore(ci): refine image publish workflow and clarify multi-arch steps

- Add reference and conditions for push in workflow comments
- Rename build step for clarity on published platform target
- Ensure oci-mediatypes is preserved for annotations to show
- Rename merge job to indicate pushing multi-arch manifest tag
2025-08-03 08:23:49 +02:00
balvalat
25ccb8471c Fix data exporting (#61)
* give the worker process access to rails storage

* add db dependence on worker on our compose example file
2025-08-03 07:45:46 +02:00
Bishal Shrestha
efd96f606c added multi_select_controller and added multi-select support for tags without Ctrl/Shift in transaction forms (#55)
* added multi_select_controller and added multi-select support for tags without Ctrl/Shift in transaction forms

* fix: prevent memory leak by properly cleaning up event listener in multi-select controller

* chore: updated indentation
2025-08-03 07:35:34 +02:00
Vincent Teo
46c31e1937 fix: dark mode ui issue for transaction header (#64) 2025-08-03 07:27:42 +02:00
Juan José Mata
a6d830c263 *cowboy* Remove hosted version notice
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-08-02 04:20:22 +02:00
Juan José Mata
54bc37a651 Remove Synth Finance references (#47)
* Remove Synth Finance integration

* Linter noise

* Fix failing (old) test, use it for Twelve Data

---------

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-08-02 00:28:55 +02:00
Juan José Mata
656f7e9495 Remove Intercom integration (#51)
* Remove Intercom integration

* New Sure name

* More documentation/Discord link updates

* Bump to 0.6.1

* More copy fixes/Sure branding

* Make LLMs happy
v0.6.1
2025-08-01 19:47:48 +02:00
Vincent Teo
d04c87449d feat: split provider check and remove hardcoded synth check (#45) 2025-08-01 08:07:34 +02:00
Vincent Teo
66a87c852c fix: correct some dark mode ui issues (#52) 2025-08-01 07:49:08 +02:00
Steven A.J.
efcd356abf Merge pull request #42 from we-promise/jjmata/update-readme
More readme updates
2025-07-31 21:10:12 -05:00
Vincent Teo
5bdefe6e63 feat: Add Twelve Data provider for exchange rates and securities (#2)
* feat: Add Twelve Data provider for exchange rates and securities

* test: fix hosting controller test, linting

* fix: add countries gem to handle country codes in Twelve Data provider

* fix: allow security search combobox to have no logo

* refactor: update Twelve Data provider use time series endpoint

* fix: set twelve data as default provider
2025-07-31 23:31:37 +02:00
Juan José Mata
8ecd8dcf8e New Wiki page localtion
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-07-31 22:47:27 +02:00
Juan José Mata
d0125e9c79 Merge branch 'main' into jjmata/update-readme
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-07-29 14:14:55 -07:00
Juan José Mata
5223d56dc8 Update docker.md with new naming
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-07-29 23:11:44 +02:00
Steven A.J.
2458fa90c8 Update README Links (#41)
* point links to wiki & LICENSE

* repair final release link

* repair old licensing reference
2025-07-29 22:38:08 +02:00
Vincent Teo
aca1da146f feat: sort accounts by name in main page (#19) 2025-07-29 06:27:49 +02:00
PrplHaz4
34e775ae95 Update Plaid Docs: Rebrand to Sure and add note about delayed OAuth (#13)
Update setting up Plaid Sync docs
- Rebrand to Sure
- Add note about delayed OAuth approval timelines

Signed-off-by: PrplHaz4 <PrplHaz4@users.noreply.github.com>
2025-07-29 05:31:34 +02:00