Zach Gollwitzer
89cc64418e
Add confirmation dialog for balance reconciliation creates and updates ( #2457 )
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
2025-07-15 18:58:40 -04:00
Zach Gollwitzer
c1d98fe73b
Start and end balance anchors for historical account balances ( #2455 )
...
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
* Add kind field to valuation
* Fix schema conflict
* Add kind to valuation
* Scaffold opening balance manager
* Opening balance manager implementation
* Update account import to use opening balance manager + tests
* Update account to use opening balance manager
* Fix test assertions, usage of current balance manager
* Lint fixes
* Add Opening Balance manager, add tests to forward calculator
* Add credit card to "all cash" designation
* Simplify valuation model
* Add current balance manager with tests
* Add current balance logic to reverse calculator and plaid sync
* Tweaks to initial calc logic
* Ledger testing helper, tweak assertions for reverse calculator
* Update test assertions
* Extract balance transformer, simplify calculators
* Algo simplifications
* Final tweaks to calculators
* Cleanup
* Fix error, propagate sync errors up to parent
* Update migration script, valuation naming
2025-07-15 11:42:41 -04:00
Zach Gollwitzer
9110ab27d2
Centralize entry naming ( #2454 )
...
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
* Centralize entry naming
* Lint fixes, code style
2025-07-10 18:40:38 -04:00
Zach Gollwitzer
afbfb474c2
Remove rate limit for api test cases
2025-07-10 16:04:36 -04:00
Zach Gollwitzer
fe8aebe920
Don't raise on invalid demo data
2025-07-10 16:01:47 -04:00
Zach Gollwitzer
188126d402
Fix activity view "new" button styles
2025-07-10 15:30:22 -04:00
Ezra Adeyinka
1a2d973f4b
chore: fix armenian dram incorrect symbol ( #2451 )
2025-07-10 12:39:25 -04:00
Josh Pigford
a91441bcc8
Remove old unique index on device_id in mobile_devices migration to allow multiple users to share the same device.
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
2025-07-09 09:22:51 -05:00
Josh Pigford
8d0c1c5a56
Update database schema: increment version to 2025_07_02_173231, modify virtual column definition for classification, and add new indexes for entries and exchange rates.
2025-07-09 09:20:56 -05:00
dependabot[bot]
e848db2aa1
Bump sidekiq from 8.0.4 to 8.0.5 ( #2441 )
...
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
---
updated-dependencies:
- dependency-name: sidekiq
dependency-version: 8.0.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:39:36 -04:00
dependabot[bot]
e7043328e4
Bump pagy from 9.3.4 to 9.3.5 ( #2444 )
...
---
updated-dependencies:
- dependency-name: pagy
dependency-version: 9.3.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:39:19 -04:00
dependabot[bot]
d77c683d59
Bump faraday from 2.13.1 to 2.13.2 ( #2442 )
...
---
updated-dependencies:
- dependency-name: faraday
dependency-version: 2.13.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:28:24 -04:00
dependabot[bot]
aaf24e1309
Bump stripe from 15.2.1 to 15.3.0 ( #2445 )
...
---
updated-dependencies:
- dependency-name: stripe
dependency-version: 15.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:25:31 -04:00
dependabot[bot]
f9b131a5db
Bump faker from 3.5.1 to 3.5.2 ( #2448 )
...
---
updated-dependencies:
- dependency-name: faker
dependency-version: 3.5.2
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:22:10 -04:00
dependabot[bot]
a63d36d10c
Bump sentry-rails from 5.25.0 to 5.26.0 ( #2447 )
...
---
updated-dependencies:
- dependency-name: sentry-rails
dependency-version: 5.26.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:22:01 -04:00
Zach Gollwitzer
662f2c04ce
Multi-step account forms + clearer balance editing ( #2427 )
...
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
* Initial multi-step property form
* Improve form structure, add optional tooltip help icons to form fields
* Add basic inline alert component
* Clean up and improve property form lifecycle
* Implement Account status concept
* Lint fixes
* Remove whitespace
* Balance editing, scope updates for account
* Passing tests
* Fix brakeman warning
* Remove stale columns
* data constraint tweaks
* Redundant property
2025-07-03 09:33:07 -04:00
Eran Avidor
ba7e8d3893
Fix/design system violations ( #2422 )
...
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
* fix: replace hardcoded bg-white with bg-container in notification notice
* fix: replace hardcoded text-white with fg-inverse in notification CTA
* fix: replace hardcoded text-white with fg-inverse in text tooltip
* fix: replace hardcoded bg-gray-900 text-white with bg-inverse fg-inverse in invitations form
* fix: replace hardcoded bg-gray-800 text-white with bg-inverse fg-inverse in AI consent form
* fix: replace hardcoded text-white with fg-inverse in changelog page
* fix: replace hardcoded text-white and border-gray-500 with fg-inverse and border-secondary in investment tooltip
* fix: replace hardcoded text-white with fg-inverse in holdings missing price tooltip
* fix: replace hardcoded text-white and bg-gray-400 with fg-inverse and bg-surface-inset in settings profiles
* fix: replace hardcoded bg-orange-500 text-white with bg-yellow-600 fg-inverse in settings hosting danger zone
---------
Co-authored-by: Eran Avidor <eavidor@Eran-Avidor-MBP.lan>
2025-07-01 13:53:36 -04:00
Zach Gollwitzer
65329b333d
Fix settings labels
...
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
Fixes #2424
2025-06-30 10:22:37 -04:00
dependabot[bot]
0974783a6b
Bump selenium-webdriver from 4.33.0 to 4.34.0 ( #2425 )
...
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium ) from 4.33.0 to 4.34.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases )
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES )
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.33.0...selenium-4.34.0 )
---
updated-dependencies:
- dependency-name: selenium-webdriver
dependency-version: 4.34.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 09:29:20 -04:00
dependabot[bot]
48f792c20e
Bump jwt from 2.10.1 to 2.10.2 ( #2426 )
...
Bumps [jwt](https://github.com/jwt/ruby-jwt ) from 2.10.1 to 2.10.2.
- [Release notes](https://github.com/jwt/ruby-jwt/releases )
- [Changelog](https://github.com/jwt/ruby-jwt/blob/main/CHANGELOG.md )
- [Commits](https://github.com/jwt/ruby-jwt/compare/v2.10.1...v2.10.2 )
---
updated-dependencies:
- dependency-name: jwt
dependency-version: 2.10.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 09:29:00 -04:00
Zach Gollwitzer
869462a9a5
Dynamic y-axis baseline value for chart scales
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
2025-06-27 12:57:23 -04:00
Zach Gollwitzer
e4a82d85e8
Properly handle Plaid investment account transfers ( #2420 )
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
2025-06-27 10:50:45 -04:00
Zach Gollwitzer
18148acd69
Fix chart scale issues ( #2418 )
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
2025-06-26 18:59:11 -04:00
Zach Gollwitzer
8db95623cf
Handle holding quantity generation for reverse syncs correctly when not all holdings are generated for current day ( #2417 )
...
* Handle reverse calculator starting portfolio generation correctly
* Fix current_holdings to handle different dates and hide zero quantities
- Use DISTINCT ON to get most recent holding per security instead of assuming same date
- Filter out zero quantity holdings from UI display
- Maintain cash display regardless of zero balance
- Use single efficient query with proper Rails syntax
* Continue to process holdings even if one is not resolvable
* Lint fixes
2025-06-26 16:57:17 -04:00
Zach Gollwitzer
e60b5df442
Handle bad API data for trade quantity signage ( #2416 )
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
2025-06-26 09:54:25 -04:00
Zach Gollwitzer
f3ab4a27ee
Fix credit card balance history ( #2414 )
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
2025-06-25 17:03:53 -04:00
Zach Gollwitzer
4b50acff2b
Replace sync spinners with pulse animation ( #2413 )
...
* Replace sync spinners with pulse animation
* Remove dev code
2025-06-25 16:51:30 -04:00
Joseph Ho
637d630388
transfer: Support transfers of different currencies between accounts. ( #2243 )
...
Fixes part of #1852 .
Co-authored-by: Zach Gollwitzer <zach@maybe.co>
2025-06-25 16:34:18 -04:00
Zach Gollwitzer
72a0f87a9c
Fix race condition in sync status monitor ( #2412 )
...
Move family timestamp update to after_commit callback to ensure
database visibility before cache invalidation
2025-06-25 15:23:15 -04:00
Kenrick Tandrian
cea49d5038
fix(models): use self.id ( #2410 )
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
2025-06-24 11:15:28 -04:00
Josh Pigford
c0617f74cd
Fix linting issues in migration file
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
2025-06-23 11:31:57 -05:00
Josh Pigford
653decbc0b
Fix outdated timezone references
...
Updates outdated timezone identifiers in the database to their current
equivalents. This resolves ArgumentError exceptions when users have
outdated timezones like "Europe/Kiev" stored in their preferences.
Timezone mappings:
- Europe/Kiev → Europe/Kyiv
- Asia/Calcutta → Asia/Kolkata
- Asia/Katmandu → Asia/Kathmandu
- Asia/Rangoon → Asia/Yangon
- Asia/Saigon → Asia/Ho_Chi_Minh
- Pacific/Ponape → Pacific/Pohnpei
- Pacific/Truk → Pacific/Chuuk
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 11:25:03 -05:00
dependabot[bot]
1cfa6cfca8
Bump lookbook from 2.3.9 to 2.3.11 ( #2405 )
...
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
Bumps [lookbook](https://github.com/lookbook-hq/lookbook ) from 2.3.9 to 2.3.11.
- [Release notes](https://github.com/lookbook-hq/lookbook/releases )
- [Commits](https://github.com/lookbook-hq/lookbook/compare/v2.3.9...v2.3.11 )
---
updated-dependencies:
- dependency-name: lookbook
dependency-version: 2.3.11
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 10:21:33 -04:00
dependabot[bot]
e809335a47
Bump faraday-retry from 2.3.1 to 2.3.2 ( #2406 )
...
Bumps [faraday-retry](https://github.com/lostisland/faraday-retry ) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/lostisland/faraday-retry/releases )
- [Changelog](https://github.com/lostisland/faraday-retry/blob/main/CHANGELOG.md )
- [Commits](https://github.com/lostisland/faraday-retry/compare/v2.3.1...v2.3.2 )
---
updated-dependencies:
- dependency-name: faraday-retry
dependency-version: 2.3.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 10:21:25 -04:00
dependabot[bot]
956008acbf
Bump debug from 1.10.0 to 1.11.0 ( #2407 )
...
Bumps [debug](https://github.com/ruby/debug ) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/ruby/debug/releases )
- [Commits](https://github.com/ruby/debug/compare/v1.10.0...v1.11.0 )
---
updated-dependencies:
- dependency-name: debug
dependency-version: 1.11.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 10:21:14 -04:00
dependabot[bot]
8b56262573
Bump faraday-multipart from 1.1.0 to 1.1.1 ( #2408 )
...
Bumps [faraday-multipart](https://github.com/lostisland/faraday-multipart ) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/lostisland/faraday-multipart/releases )
- [Changelog](https://github.com/lostisland/faraday-multipart/blob/main/CHANGELOG.md )
- [Commits](https://github.com/lostisland/faraday-multipart/compare/v1.1.0...v1.1.1 )
---
updated-dependencies:
- dependency-name: faraday-multipart
dependency-version: 1.1.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 10:21:07 -04:00
dependabot[bot]
615912040c
Bump ostruct from 0.6.1 to 0.6.2 ( #2409 )
...
Bumps [ostruct](https://github.com/ruby/ostruct ) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/ruby/ostruct/releases )
- [Commits](https://github.com/ruby/ostruct/compare/v0.6.1...v0.6.2 )
---
updated-dependencies:
- dependency-name: ostruct
dependency-version: 0.6.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 10:20:58 -04:00
Zach Gollwitzer
fcf14f5f27
Add pre-pull request flow for Claude code
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
2025-06-20 17:33:03 -04:00
Zach Gollwitzer
63d8114b05
Separate exclude and one-time transaction handling ( #2400 )
...
* Separate exclude and one-time transaction handling
- Split transaction "exclude" and "one-time" toggles into separate controls in transaction detail view
- Updated Transaction::Search to show excluded transactions with grayed-out styling instead of filtering them out
- Modified IncomeStatement calculations to exclude both excluded and one_time transactions from totals
- Added migration to convert existing excluded transactions to also be one_time for backward compatibility
- Updated transaction list view to show asterisk for one_time transactions and gray out excluded ones
- Added controller support for kind parameter in transaction updates
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix linting issues
- Remove trailing whitespace from migration
- Fix ERB formatting throughout templates
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-20 17:10:36 -04:00
Zach Gollwitzer
c003e8c6ed
Transfer match truncation fix
2025-06-20 14:08:46 -04:00
Zach Gollwitzer
ab1c17ea14
Fix transaction layout alignment regression
2025-06-20 13:58:24 -04:00
Zach Gollwitzer
1aae00f586
perf(transactions): add kind
to Transaction
model and remove expensive Transfer joins in aggregations ( #2388 )
...
* add kind to transaction model
* Basic transfer creator
* Fix method naming conflict
* Creator form pattern
* Remove stale methods
* Tweak migration
* Remove BaseQuery, write entire query in each class for clarity
* Query optimizations
* Remove unused exchange rate query lines
* Remove temporary cache-warming strategy
* Fix test
* Update transaction search
* Decouple transactions endpoint from IncomeStatement
* Clean up transactions controller
* Update cursor rules
* Cleanup comments, logic in search
* Fix totals logic on transactions view
* Fix pagination
* Optimize search totals query
* Default to last 30 days on transactions page if no filters
* Decouple transactions list from transfer details
* Revert transfer route
* Migration reset
* Bundle update
* Fix matching logic, tests
* Remove unused code
2025-06-20 13:31:58 -04:00
Josh Pigford
7aca5a2277
Fix remaining rubocop offenses
...
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
- Fix string literal style in doorkeeper.rb
- Add missing final newlines
- Remove trailing whitespace
- Fix array bracket spacing in migrations
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 08:38:04 -05:00
Josh Pigford
8296e10246
Fix linting issues and update API key test for source validation
...
- Remove trailing whitespace in auth controller and mobile device model
- Update API key test to expect new validation message with source
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 08:28:32 -05:00
Josh Pigford
9336719242
Add secure OAuth2-based mobile authentication
...
- Replace API keys with OAuth2 tokens for mobile apps
- Add device tracking and management for mobile sessions
- Implement 30-day token expiration with refresh tokens
- Add MFA/2FA support for mobile login
- Create dedicated auth endpoints (signup/login/refresh)
- Skip CSRF protection for API endpoints
- Return plaintext tokens (not hashed) in responses
- Track devices with unique IDs and metadata
- Enable seamless native mobile experience without OAuth redirects
This provides enterprise-grade security for the iOS/Android apps while maintaining a completely native authentication flow.
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 08:20:22 -05:00
Josh Pigford
cba0bdf0e2
Fix OAuth mobile app support with custom URL schemes
...
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
- Configure Doorkeeper to allow custom URL schemes (maybeapp://)
- Disable force_ssl_in_redirect_uri to support non-HTTPS schemes
- Add custom Doorkeeper views with mobile OAuth detection
- Disable Turbo for mobile OAuth flows to prevent redirect interference
- Add display parameter preservation through OAuth flow
- Create custom Doorkeeper layouts with proper styling
- Add comprehensive integration tests for mobile OAuth flows
- Ensure all OAuth pages use proper doorkeeper/application layout
This allows the mobile app to complete OAuth authorization flows
without the web app interfering with custom URL scheme redirects.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 05:38:23 -05:00
Josh Pigford
404066eaa1
Fix rubocop linting issues in API chat endpoints
...
- Fix trailing whitespace
- Add missing final newlines
- Fix array bracket spacing
- Auto-corrected all layout issues
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 04:36:31 -05:00
Josh Pigford
94202b2a6b
Add API v1 chat endpoints
...
- Add chats#index and chats#show endpoints to list and view AI conversations
- Add messages#create endpoint to send messages to AI chats
- Include API documentation for chat endpoints
- Add controller tests for new endpoints
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 04:32:14 -05:00
Josh Pigford
4d3c710291
Fix Active Record encryption for self-hosted deployments
...
Auto-generate encryption keys based on SECRET_KEY_BASE when not provided.
This ensures API key encryption works out of the box for self-hosted users
without requiring manual setup steps.
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 04:31:10 -05:00
Josh Pigford
b65e4d376e
Fix trailing whitespace in API keys system test
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
2025-06-17 16:22:09 -05:00