Commit Graph

29 Commits

Author SHA1 Message Date
ghost
e59235fdc5 feat(statements): add account statement vault (#1753)
* feat(statements): add account statement vault

Add web-only statement uploads, account linking, duplicate detection, and per-account coverage/reconciliation checks without mutating transactions. Extend ActiveStorage authorization and targeted tests for family/account scoping.

* fix(statements): return deleted account statements to inbox

Preserve linked statement records when an account is deleted by moving them back to the unmatched inbox, then expand coverage for upload validation, sanitized parser metadata, unavailable reconciliation, and missing-month coverage.

* fix(statements): harden vault upload review flows

Address review and security findings in the statement vault by preserving sanitized parser metadata, failing closed on orphaned statement blobs, avoiding account_id mass assignment permits, and adding regression coverage for link/delete edge cases.

* fix(statements): harden vault upload and access controls

* fix(statements): address vault hardening review

* fix(statements): address vault review feedback

Prioritize SHA-256 duplicate detection while preserving MD5 fallback for legacy rows.

Remove free-form account notes from statement matching, document direct account-destroy unlinking, and add year-selectable historical coverage with muted out-of-range months.

* fix(statements): harden vault review follow-ups

Clarify legacy MD5 checksum use, whitelist statement balance helper dispatch, and preserve sanitized parser metadata.

Hide statement management controls from read-only viewers while keeping server-side authorization unchanged.

* fix(statements): repair settings system coverage

Allow the changelog provider lookup in the self-hosting settings system test, include Statement Vault in settings navigation coverage, and align the feature title casing. Update the devcontainer so ActiveStorage and parallel system tests can run in the documented environment.

* fix(statements): move vault beside accounts

Place Statement Vault with account settings instead of between Imports and Exports. Keep settings footer ordering and system navigation coverage aligned, including the non-admin visibility guard.

* fix(statements): address vault review cleanup

Resolve CodeRabbit review feedback for statement upload validation, duplicate race handling, account statement matching semantics, metadata detection, ActiveStorage authorization tests, and small UI/style cleanups.

* fix(statements): address vault cleanup review

* fix(statements): deduplicate vault style helpers

* fix(statements): close vault review follow-ups

* fix(statements): refresh schema after upstream rebase

* fix(statements): process vault uploads sequentially

* fix(statements): close vault review follow-ups

* fix(statements): scope vault index to accessible accounts

* fix(statements): harden statement vault readiness

Squash the statement vault migration hardening into the feature migration, tighten Active Storage authorization edge cases, bound CSV metadata detection, and add real PDF fixture coverage for stored statements.

Validation: targeted statement/auth/controller/provider tests, full Rails suite, system tests, RuboCop, Biome, Brakeman, Zeitwerk, importmap audit, npm audit, ERB lint, CodeRabbit, and Codex Security all passed locally.

* fix(statements): close vault review follow-ups

Move statement unlinking to after account destroy commit, keep Kraken account creation on the shared crypto helper, and add statement metadata length limits with DB checks.

Validation: fresh devcontainer with fresh DB via db:prepare, focused account/statement/Kraken/Binance tests, RuboCop, Brakeman, Zeitwerk, git diff --check, CodeRabbit, and Codex Security passed before commit.

* fix(statements): address vault scan follow-ups

Move statement tab data setup out of the ERB partial, harden reconciliation labels and coverage initialization, and tighten statement schema constraints.

Validation: CodeRabbit and Codex Security reviewed the current PR diff; Rails focused tests, full Rails tests, system tests, RuboCop, Brakeman, Zeitwerk, ERB lint, npm lint, importmap audit, npm audit, and git diff --check passed.

* fix(statements): defer vault tab loading

---------

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2026-05-13 21:05:11 +02:00
ghost
95f6451b39 feat(sync): add Brex provider connections (#1752)
* feat(sync): add Brex provider schema

Adds Brex item and account tables with per-family credentials, scoped upstream account uniqueness, encrypted token storage, and sanitized provider payload columns.

* feat(sync): add Brex provider core

Adds Brex item/account models, provider client and adapter support, family connection helpers, and provider enum registration for read-only Brex cash and card data.

* feat(sync): add Brex import pipeline

Adds Brex account discovery, linked-account sync, cash/card balance processors, transaction import, sanitized metadata handling, and idempotent provider entry processing.

* feat(sync): add Brex connection flows

Adds Mercury-style Brex connection management, explicit item-scoped account selection and linking, settings provider UI, account index visibility, localized copy, and per-item cache handling.

* test(sync): cover Brex provider workflows

Adds targeted coverage for Brex provider requests, adapter config, item/account guards, importer behavior, entry processing, and Mercury-style controller flows.

* fix(sync): align Brex API edge cases

Tightens Brex account fetching against the official card-account response shape, sends transaction start filters as RFC3339 date-times, and keeps provider error bodies out of user-facing messages while expanding provider client guard coverage.

* fix(sync): harden Brex provider integration

Restrict Brex API base URLs to official hosts, tighten account-selection UI behavior, and add tests for invalid credentials, cache scoping, and provider setup edge cases.

* test(sync): avoid Brex secret-shaped fixtures

* refactor(sync): extract Brex account flows

* fix(sync): address Brex provider review feedback

* fix(sync): address Brex review follow-ups

Move remaining Brex review cleanup into focused model behavior, tighten link/setup edge cases, localize summaries, and add regression coverage from CodeRabbit feedback.

Also records the security-review pass as no-findings after diff-scoped inspection and Brakeman validation.

* refactor(sync): split Brex account flow controllers

Route Brex account selection and setup actions through small namespaced controllers while keeping existing URLs and helpers stable.

Business flow remains in BrexItem::AccountFlow; the main Brex item controller now only handles connection CRUD, provider-panel rendering, destroy, and sync.

* fix(sync): address Brex CodeRabbit review

* fix(sync): address Brex follow-up review

* fix(sync): address Brex review follow-ups

* fix(sync): address Brex sync review findings

* fix(sync): polish Brex review copy and errors

* fix(sync): register Brex provider health

* fix(sync): polish Brex bank sync presentation

* fix(sync): address Brex review follow-ups

* fix(sync): tighten Brex setup params

* test(api): stabilize usage rate-limit window

* fix(sync): polish Brex setup flow nits

* fix(sync): harden Brex setup params

* fix(sync): finalize Brex review cleanup

---------

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2026-05-13 18:13:48 +02:00
Juan José Mata
18f0718f63 Fixed on a PR about to be merged 2026-05-12 20:26:43 +02:00
Juan José Mata
fdffcd0dfd Add libvips to devcontainer Dockerfile
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2026-05-12 16:08:31 +02:00
soky srm
90b1308866 Ipv6 support (#1437)
* Ipv6 support

* Proper fix for containers, dev and local

* Edits similar to non-AI compose file

---------

Co-authored-by: Juan José Mata <jjmata@jjmata.com>
2026-04-13 13:44:37 +02:00
Pedro J. Aramburu
616c363b3e Enable selenium service in devcontainer for system tests (#1340)
Co-authored-by: Pedro J. Aramburu <pedro@joakin.dev>
2026-04-06 14:15:57 +02:00
Gilles Devillers
75bbeed300 fix: use port configured in .env (#773) 2026-01-25 16:02:57 +01:00
Juan José Mata
c138d8e367 Expose pg port 5432 again
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-11-26 21:45:01 +01:00
Juan José Mata
805f8207a9 Change base image from bullseye to bookworm
No more `slim-bullseye` images?

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-11-10 15:53:01 +01:00
LPW
f98858cffc Upgrade Ruby version to 3.4.7 (#305)
* Upgrade Ruby version to 3.4.7

* Update Dockerfile as well

---------

Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2025-11-09 21:10:51 +01:00
Juan José Mata
e065c98396 Revert "Make bin/rails test pass in Dev Container" to avoid side-effects (#302)
* Revert "Add dummy PLAID_CLIENT_ID and PLAID_SECRET to env (#165)"

This reverts commit 617876f140.

* Make sure Plaid tests pass withtout ENV requirements
2025-11-07 19:53:31 +01:00
Juan José Mata
6f1b651b80 Match pg in dev container and example.compose.yml
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-11-04 20:34:01 +01:00
J4ker
749bcda871 Update Dockerfile - procps (#286)
* Update Dockerfile - procps

install procps for worker container healthcheck - pgrep

Signed-off-by: J4ker <56275036+J4ker@users.noreply.github.com>

* Good idea, adding it to dev container

---------

Signed-off-by: J4ker <56275036+J4ker@users.noreply.github.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2025-11-04 19:09:49 +01:00
Juan José Mata
0fc70e9082 Add runServices for db and redis in devcontainer
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-10-26 23:16:25 +01:00
Juan José Mata
11d4862fb3 No need to expose db + redis ports in .devcontainer
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-10-22 23:32:41 +02:00
Juan José Mata
617876f140 Add dummy PLAID_CLIENT_ID and PLAID_SECRET to env (#165)
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
2025-09-25 15:05:53 +02:00
Himank Dave
1ae9e3e8fb feat(devcontainer): upgrade dev environment with better prompts, extensions, and configs (#95)
* chore(devcontainer): optimize Dockerfile for Ruby dev environment

* chore(devcontainer): update container name and improve VSCode settings

- Rename devcontainer from 'Maybe' to 'Sure'
- Add GIT_EDITOR env var for VSCode integration
- Add Shopify Ruby extensions pack

* feat(devcontainer): add custom Bash prompt with Git info

- Implement Git branch, status markers in prompt
- Show username, current dir, and Git info with colors
- Mount custom .bashrc into container for prompt enhancements

* fix(devcontainer): improve branch detection & status markers in prompt

- Support detached HEAD by showing short SHA
- Show detailed git states: rebase, merge, bisect, am
- Fix prompt formatting and trailing colors

* Better solution to GitHub Codespaces CSRF issue

* feat(devcontainer): add Git autocompletion support in bashrc

* refactor(devcontainer): reorder volumes and service settings

- Added volume mounts for workspace & bundle cache to worker service.

---------

Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2025-08-10 07:53:46 +02:00
Zach Gollwitzer
caf35701ef Fix Docker builds after package updates 2025-05-20 14:00:31 -04:00
Zach Gollwitzer
dd605a577e Bump ruby to 3.4.4 2025-05-20 09:09:10 -04:00
Joseph Ho
54f5a44a60 devContainer: Use Redis for ActiveJob and ActionCable. (#2017)
* devContainer: Use Redis for ActiveJob and ActionCable

* devContainer: Simplify environment variables for services.

* devContainer: Remove version field as it's no longer required in Compose.
2025-03-24 10:00:42 -04:00
Zach Gollwitzer
d428a1f954 Bump to Ruby 3.4.1 (#1721) 2025-01-27 19:59:16 -05:00
Luis Ezcurdia
18266c3352 Bump ruby version to 3.3.5 (#1402) 2024-11-05 11:05:08 -05:00
oxdev03
4ad28d6eff Add BiomeJS for Linting and Formatting JavaScript relates to #1295 (#1299)
* chore: add formatting and linting for javascript code relates to #1295

* use spaces instaed

* add to recommended extensions

* only enforce lint

* auto save
2024-10-14 17:09:27 -04:00
Chris Covington
b437bb20c4 Bump ruby from 3.3.1 to 3.3.4 (#1084) 2024-08-13 12:49:51 -04:00
Zach Gollwitzer
4f508cd151 Bump to Ruby 3.3.1 (#709)
* Bump to Ruby 3.3.1

* Update Dockerfile versions

* Omit system tests in CI

* Use `:test` adapter in test

* Remove redundant config
2024-05-03 08:22:19 -04:00
Elijah
018628f68e Add a BUNDLE_PATH to .devcontainer/docker-compose.yml (#358)
Co-authored-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>
2024-02-07 15:27:20 -05:00
Rob Zolkos
d4751053f3 Fix database config for non-devcontainer environments (#318)
Back in this [commit](5f50ea3f02 (diff-5a674c769541a71f2471a45c0e9dde911b4455344e3131bddc5a363701ba6325R22-R23)) I added a default postgres user and password.

Often this is not the user and password that is used in non-devcontainer environments.

This commit uses environment variables that are set in the devcontainer to set the user and password in the database.yml file.

If the environment variables are not set, it falls back to the default user and password on the users system.
2024-02-05 22:17:50 -06:00
Rob Zolkos
ecd8b8b202 Fix devcontainer Dockerfile for Ruby 3.3.0 on Apple Silicon (#293)
This compiles a Ruby 3.3.0 with a patch that fixes issues on Apple
Silicon Macs.  It is a bandaid until Ruby 3.3.1 when we will revert back
to using blessed ruby docker images.
2024-02-05 12:36:53 -06:00
Rob Zolkos
5f50ea3f02 Add basic devcontainer 2024-02-02 16:30:10 +00:00