Skip to content

Conversation

@OrangeDrangon
Copy link

@OrangeDrangon OrangeDrangon commented Oct 25, 2025

Options are documented here including an example on how to set a custom endpoint:

https://guides.rubyonrails.org/active_storage_overview.html#s3-service-amazon-s3-and-s3-compatible-apis

Summary by CodeRabbit

Release Notes

  • New Features
    • Added support for Generic S3-compatible storage configuration, enabling users to integrate S3-compatible storage providers with customizable endpoint URLs, access credentials, region, bucket settings, and path style options for flexible cloud storage deployment.

@coderabbitai
Copy link

coderabbitai bot commented Oct 25, 2025

Walkthrough

Adds Generic S3 storage configuration to the application. Introduces environment variables in .env.example for S3-compatible endpoint configuration and adds corresponding storage service definition in config/storage.yml enabling use of S3-compatible storage providers.

Changes

Cohort / File(s) Summary
Environment Configuration
\.env\.example
Added six new environment variables for Generic S3 storage: GENERIC_S3_ACCESS_KEY_ID, GENERIC_S3_SECRET_ACCESS_KEY, GENERIC_S3_REGION, GENERIC_S3_BUCKET, GENERIC_S3_ENDPOINT, and GENERIC_S3_FORCE_PATH_STYLE (defaults to false). Marked ACTIVE_STORAGE_SERVICE=generic_s3 as the enabling option.
Storage Configuration
config/storage\.yml
Added new generic_s3 storage service block configured with S3 service type, mapping all six environment variables as credentials and connection parameters, with force_path_style cast to boolean.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

  • Configuration-only changes with no business logic modifications
  • Straightforward, repetitive key-value declarations
  • No control flow or error handling impacts

Poem

🐰 A storage path so S3-fine,
Generic endpoints in a line,
Configuration, clean and true,
New buckets spring from morning dew! 🪣✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "add custom s3 support storage config option" accurately describes the main change in the pull request. The changeset adds a new generic_s3 storage configuration block to both .env.example and config/storage.yml, enabling S3-compatible API support. The title is concise, clear, and specific enough for reviewers scanning the commit history to understand the primary objective of introducing custom S3 storage configuration capability.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@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: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b24b102 and 431aea4.

📒 Files selected for processing (2)
  • .env.example (1 hunks)
  • config/storage.yml (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
config/**

📄 CodeRabbit inference engine (AGENTS.md)

Store application and environment configuration under config/

Files:

  • config/storage.yml

Comment on lines +110 to +118
# Generic S3
# ==========
# ACTIVE_STORAGE_SERVICE=generic_s3 <- Enables Generic S3 storage
# GENERIC_S3_ACCESS_KEY_ID=
# GENERIC_S3_SECRET_ACCESS_KEY=
# GENERIC_S3_REGION=
# GENERIC_S3_BUCKET=
# GENERIC_S3_ENDPOINT=
# GENERIC_S3_FORCE_PATH_STYLE= <- defaults to false
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Clarify region requirement and add guidance in .env.example documentation.

The Generic S3 section omits important documentation compared to the existing Amazon S3 section:

  1. Region guidance missing: The Amazon S3 section documents that S3_REGION defaults to us-east-1 if not set. The Generic S3 section doesn't clarify whether GENERIC_S3_REGION is required, optional, or has a default.

  2. Endpoint guidance missing: No guidance on what format to expect for GENERIC_S3_ENDPOINT (e.g., is it required? what format?).

  3. Use case clarity: Users may be unclear when to choose generic S3 vs. AWS S3 directly.

Add documentation similar to the Amazon section to align expectations with the actual configuration behavior.

Consider adding inline comments like:

# GENERIC_S3_REGION= # required; specify the region for your S3-compatible service
# GENERIC_S3_ENDPOINT= # required; e.g., https://s3.custom-provider.com
# GENERIC_S3_FORCE_PATH_STYLE= # defaults to false; set to true if using path-style URLs

Also clarify whether the region handling matches the behavior documented in config/storage.yml.



---

🏁 Script executed:

```shell
#!/bin/bash
# Inspect .env.example to compare Amazon S3 and Generic S3 sections
echo "=== .env.example lines 90-120 ==="
sed -n '90,120p' .env.example

Length of output: 959


🏁 Script executed:

#!/bin/bash
# Find and display config/storage.yml or similar configuration file
echo "=== Looking for storage configuration files ==="
find . -name "storage.yml" -o -name "storage.yaml" | head -20

Length of output: 68


🏁 Script executed:

#!/bin/bash
# Search for Rails config files that might set S3 defaults
echo "=== Searching for S3 configuration in Rails config ==="
fd -e rb -e yml . config/ 2>/dev/null | xargs -I {} sh -c 'grep -l "REGION\|generic_s3" {} 2>/dev/null' | head -20

Length of output: 73


🏁 Script executed:

#!/bin/bash
# Look for any documentation about generic S3 or S3 region defaults in the codebase
echo "=== Searching for region default mentions ==="
rg -i "region.*default\|default.*region" -C 2 --type rb --type yml 2>/dev/null | head -50

Length of output: 45



---

🏁 Script executed:

```shell
#!/bin/bash
# Display config/storage.yml to understand S3 configurations
echo "=== config/storage.yml ==="
cat ./config/storage.yml

Length of output: 1144


🏁 Script executed:

#!/bin/bash
# Search for generic_s3 implementation and region/endpoint handling
echo "=== Searching for generic_s3 implementation ==="
rg -i "generic_s3\|generic.*s3" -C 5 --type rb --type yml 2>/dev/null | head -80

Length of output: 47


🏁 Script executed:

#!/bin/bash
# Search for ENV variable access related to region/endpoint
echo "=== Searching for GENERIC_S3 ENV variable usage ==="
rg "GENERIC_S3_REGION|GENERIC_S3_ENDPOINT" -C 3 --type rb 2>/dev/null

Length of output: 51


Document required GENERIC_S3_REGION and GENERIC_S3_ENDPOINT in .env.example.

Verification confirms the documentation gaps. The implementation shows:

  • GENERIC_S3_REGION has no default: Unlike Amazon S3 which defaults to us-east-1, the generic_s3 config in config/storage.yml uses <%= ENV["GENERIC_S3_REGION"] %> with no fallback—setting it to nil if unset.
  • GENERIC_S3_ENDPOINT has no default: Similarly, <%= ENV["GENERIC_S3_ENDPOINT"] %> will be nil if unset, making it effectively required.
  • GENERIC_S3_FORCE_PATH_STYLE correctly documents the default: The code confirms it defaults to "false", matching the .env.example inline comment.

Update .env.example lines 114–116 to clarify these are required and match the actual behavior:

# GENERIC_S3_REGION= # required; specify the region for your S3-compatible service
# GENERIC_S3_ENDPOINT= # required; e.g., https://s3.custom-provider.com
# GENERIC_S3_FORCE_PATH_STYLE= # defaults to false
🤖 Prompt for AI Agents
In .env.example around lines 110 to 118 (update lines 114–116), the
GENERIC_S3_REGION and GENERIC_S3_ENDPOINT entries are not documented as required
even though the runtime config reads them with no fallback; change those
commented lines to indicate they are required and provide an example for the
endpoint and keep GENERIC_S3_FORCE_PATH_STYLE noted as default false—e.g.,
replace the three lines with comments stating GENERIC_S3_REGION= # required;
specify the region for your S3-compatible service, GENERIC_S3_ENDPOINT= #
required; e.g., https://s3.custom-provider.com, and GENERIC_S3_FORCE_PATH_STYLE=
# defaults to false.

Comment on lines +26 to +33
generic_s3:
service: S3
access_key_id: <%= ENV["GENERIC_S3_ACCESS_KEY_ID"] %>
secret_access_key: <%= ENV["GENERIC_S3_SECRET_ACCESS_KEY"] %>
region: <%= ENV["GENERIC_S3_REGION"] %>
bucket: <%= ENV["GENERIC_S3_BUCKET"] %>
endpoint: <%= ENV["GENERIC_S3_ENDPOINT"] %>
force_path_style: <%= ActiveModel::Type::Boolean.new.cast(ENV.fetch("GENERIC_S3_FORCE_PATH_STYLE", "false")) %>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Add default region for generic S3 to avoid potential runtime errors.

The generic_s3 configuration is missing a default region (line 30), unlike the amazon configuration on line 13 which provides "us-east-1" as a default. S3-compatible services typically require a region parameter, and a nil value may cause the AWS SDK to fail or behave unexpectedly.

Consider whether this should match the amazon pattern with a sensible default, or if the absence of a default is intentional for generic S3.


🏁 Script executed:

#!/bin/bash
# Description: Check if AWS SDK or Rails Active Storage has region validation/requirements
# Search for how region is used in storage config initialization

rg -A 5 -B 5 "GENERIC_S3_REGION|S3_REGION" --type yaml --type rb

Length of output: 26


🏁 Script executed:

#!/bin/bash
# Corrected search: use proper ripgrep syntax without unsupported type
rg -n -C5 "GENERIC_S3_REGION|S3_REGION" --type yaml --type ruby

Length of output: 1151


🏁 Script executed:

#!/bin/bash
# Search for how region is actually used in Rails storage initialization
rg -n -C3 "region.*ENV|region.*fetch" --type yaml

Length of output: 904


🏁 Script executed:

#!/bin/bash
# Look for any AWS SDK or boto/S3 client initialization with region handling
rg -n -C3 "aws|s3|region" config/storage.yml

Length of output: 1032


🏁 Script executed:

#!/bin/bash
# Check if there are any Rails storage adapter implementations or docs
fd -e yml -e yaml config/ | head -20

Length of output: 333


🏁 Script executed:

#!/bin/bash
# Look for generic_s3 references in tests, docs, or other config files
rg -n "generic_s3|GENERIC_S3" --type yaml --type ruby

Length of output: 530


🏁 Script executed:

#!/bin/bash
# Search for Rails storage initialization or adapter code
fd . config/ -name "*.yml" -o -name "*.yaml"

Length of output: 230


🏁 Script executed:

#!/bin/bash
# Check for .env.example or documentation that shows expected env vars
find . -name ".env*" -o -name "README*" -o -name "SETUP*" | head -20

Length of output: 67


🏁 Script executed:

#!/bin/bash
# Look for any comments or documentation around storage configuration
rg -n "storage|S3" --type yaml -B2 -A2 | head -50

Length of output: 2319


🏁 Script executed:

#!/bin/bash
# Check .env.example for GENERIC_S3 configuration
cat ./.env.example | grep -i generic

Length of output: 255


🏁 Script executed:

#!/bin/bash
# Check .env.example for S3 pattern to understand expected format
cat ./.env.example | grep -i "s3"

Length of output: 512


🏁 Script executed:

#!/bin/bash
# Search README for any mention of generic_s3 or custom S3 setup
rg -n "generic|s3|storage" README.md -i

Length of output: 0


Add default region for generic_s3 configuration to match established pattern.

The inconsistency is confirmed: amazon config has region: <%= ENV["S3_REGION"] || "us-east-1" %> (with documented default in .env.example), but generic_s3 config has region: <%= ENV["GENERIC_S3_REGION"] %> with no fallback. If GENERIC_S3_REGION is not set, the region will be nil, which the AWS SDK requires and will likely fail. The .env.example file explicitly documents the amazon default but provides no guidance for generic_s3.

Either add a default region to config/storage.yml line 30 (e.g., || "us-east-1") or explicitly document in .env.example why generic_s3 requires explicit region configuration with no default.

🤖 Prompt for AI Agents
In config/storage.yml around lines 26 to 33, the generic_s3 block sets region
from ENV["GENERIC_S3_REGION"] with no fallback which can result in a nil region
and AWS SDK failures; update this line to provide a sensible default (e.g., ||
"us-east-1") to match the amazon config pattern or alternatively document in
.env.example that GENERIC_S3_REGION is required — implement the change by adding
the fallback default to the region setting in storage.yml or add explicit
guidance to .env.example ensuring behavior is consistent with the amazon config.

@OrangeDrangon
Copy link
Author

OrangeDrangon commented Oct 25, 2025

I do not really think the AI comments are particularly relevant without human opinion. If a human has thoughts happy to make any changes to conform to maintainer desires.

@jjmata
Copy link
Collaborator

jjmata commented Oct 26, 2025

I do not really think the AI comments are particularly relevant without human opinion. If a human has thoughts happy to make any changes to conform to maintainer desires.

Agreed. What might be nice is adding a document in docs/hosting/storage.md that explains how Sure manages this.

Copy link
Collaborator

@jjmata jjmata left a comment

Choose a reason for hiding this comment

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

Config-only changes, so low risk. Didn't test this, but LGTM.

@jjmata jjmata merged commit 0b393a0 into we-promise:main Oct 26, 2025
6 checks passed
TimesAgainst pushed a commit to Nova-Haven/sure-mod that referenced this pull request Oct 28, 2025
commit 9fefe57
Author: João Felipe <[email protected]>
Date:   Wed Oct 29 02:15:14 2025 +0400

    Feature/yahoo finance (we-promise#123)

    * Implement Yahoo Finance

    * Added tests

    * Updated hosting controller to check for managed app_mode instead of env_override

    * Suggestions from CodeRabbit and Fixes on tests

    * Remove Css changes

    * Fix yahoo finance impl and i18n

    * Updated view to use healthy method

    * remove usage

    * Updated env example

    * keep usage on class just to keep same format

    * Ci test

    * Remove some useless validations

    * Remove logs

    * Linter fixes

    * Broke this in my conflict merge

    * Wrong indentation level

    ---------

    Signed-off-by: Juan José Mata <[email protected]>
    Co-authored-by: Juan José Mata <[email protected]>

commit 3910116
Author: Albert Solà <[email protected]>
Date:   Tue Oct 28 20:23:20 2025 +0000

    Update pages/dashboard locales (we-promise#255)

commit 4fb0a38
Author: soky srm <[email protected]>
Date:   Tue Oct 28 19:32:27 2025 +0100

    Providers factory (we-promise#250)

    * Implement providers factory

    * Multiple providers sync support

    - Proper Multi-Provider Syncing: When you click sync on an account with multiple providers (e.g., both Plaid and SimpleFin), all provider items are synced
    - Better API: The existing account.providers method already returns all providers, and account.provider returns the first one for backward compatibility
    - Correct Holdings Deletion Logic: Holdings can only be deleted if ALL providers allow it, preventing accidental deletions that would be recreated on next sync
    TODO: validate this is the way we want to go? We would need to check holdings belong to which account, and then check provider allows deletion. More complex
    - Database Constraints: The existing validations ensure an account can have at most one provider of each type (one PlaidAccount, one SimplefinAccount, etc.)

    * Add generic provider_import_adapter

    * Finish unified import strategy

    * Update app/models/plaid_account.rb

    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    Signed-off-by: soky srm <[email protected]>

    * Update app/models/provider/factory.rb

    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    Signed-off-by: soky srm <[email protected]>

    * Fix account linked by plaid_id instead of external_id

    * Parse numerics to BigDecimal

    Parse numerics to BigDecimal before computing amount; guard nils.

    Avoid String * String and float drift; also normalize date.

    * Fix incorrect usage of assert_raises.

    * Fix linter

    * Fix processor test.

    * Update current_balance_manager.rb

    * Test fixes

    * Fix plaid linked account test

    * Add support for holding per account_provider

    * Fix proper account access

    Also fix account deletion for simpefin too

    * FIX match tests for consistency

    * Some more factory updates

    * Fix account schema for multipe providers

      Can do:
      - Account #1 → PlaidAccount + SimplefinAccount (multiple different providers)
      - Account #2 → PlaidAccount only
      - Account #3 → SimplefinAccount only

      Cannot do:
      - Account #1 → PlaidAccount + PlaidAccount (duplicate provider type)
      - PlaidAccount we-promise#123 → Account #1 + Account #2 (provider linked to multiple accounts)

    * Fix account setup

    - An account CAN have multiple providers (the schema shows account_providers with unique index on [account_id, provider_type])
      - Each provider should maintain its own separate entries
      - We should NOT update one provider's entry when another provider syncs

    * Fix linter and guard migration

    * FIX linter issues.

    * Fixes

    - Remove duplicated index
    - Pass account_provider_id
    - Guard holdings call to avoid NoMethodError

    * Update schema and provider import fix

    * Plaid doesn't allow holdings deletion

    * Use ClimateControl for proper env setup

    * No need for this in .git

    ---------

    Signed-off-by: soky srm <[email protected]>
    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    Co-authored-by: Juan José Mata <[email protected]>

commit 72e7d77
Author: Juan José Mata <[email protected]>
Date:   Mon Oct 27 21:52:37 2025 +0100

    Add onboarding state selector for self-hosted signup (we-promise#251)

    * Add onboarding modes to self-hosted signup

    * Style form consistently

    * Configure ONBOARDING_STATE via ENV

commit dcb6748
Author: ampersandru <[email protected]>
Date:   Mon Oct 27 04:18:45 2025 -0700

    Added a clickable drop down arrow that reveals list of instructions for Brand Fetch Client ID (we-promise#246)

    * Added a clickable drop down arrow that reveals list of instructions for Brand Fetch Client ID

    Signed-off-by: ampersandru <[email protected]>

    * Updated html code based on recommendations

    Signed-off-by: ampersandru <[email protected]>

    * Update _brand_fetch_settings.html.erb

    Signed-off-by: ampersandru <[email protected]>

    * Small edit for consistency with Twelve Data settings flow

    * HTML linting

    * Missed an extra closing tag.

    ---------

    Signed-off-by: ampersandru <[email protected]>
    Signed-off-by: Juan José Mata <[email protected]>
    Co-authored-by: Juan José Mata <[email protected]>

commit cca14c9
Author: ampersandru <[email protected]>
Date:   Mon Oct 27 03:45:01 2025 -0700

    Added a clickable drop down arrow that reveals list of instructions for Twelve Data Secret Key (we-promise#247)

    * Added a clickable drop down arrow that reveals list of instructions for Twelve Data Secret Key

    Signed-off-by: ampersandru <[email protected]>

    * Fixed html spacing

    Signed-off-by: ampersandru <[email protected]>

    * Make display even more compact

    * Remove <u> and use CSS classes instead

    ---------

    Signed-off-by: ampersandru <[email protected]>
    Co-authored-by: Juan José Mata <[email protected]>

commit 0fc70e9
Author: Juan José Mata <[email protected]>
Date:   Sun Oct 26 23:16:25 2025 +0100

    Add runServices for db and redis in devcontainer

    Signed-off-by: Juan José Mata <[email protected]>

commit d3d91f4
Author: Juan José Mata <[email protected]>
Date:   Sun Oct 26 20:53:18 2025 +0100

    Add PikaPods

    One-click installs

    Signed-off-by: Juan José Mata <[email protected]>

commit 53eb90f
Author: ampersandru <[email protected]>
Date:   Sun Oct 26 09:58:18 2025 -0700

    Added instructions on where and how to obtain API key for Twelve Data (we-promise#235)

    * Added instructions on where and how to obtain API key for Twelve Data

    Signed-off-by: ampersandru <[email protected]>

    * added rel="noopener noreferrer" to links

    Signed-off-by: ampersandru <[email protected]>

    ---------

    Signed-off-by: ampersandru <[email protected]>

commit a35a4ac
Author: Juan José Mata <[email protected]>
Date:   Sun Oct 26 17:51:31 2025 +0100

    Update version to 0.6.5-alpha.3

    Prepare for alpha.3

    Signed-off-by: Juan José Mata <[email protected]>

commit f42e6e3
Author: Albert Solà <[email protected]>
Date:   Sun Oct 26 16:50:31 2025 +0000

    Added translations for ca - Catalan (we-promise#238)

    * Add CA locales for models

    * Add CA locales for views

    * Use translations in activity feed

    * Additional CA locales

    * Fix typo

    ---------

    Co-authored-by: Juan José Mata <[email protected]>

commit db19c95
Author: ampersandru <[email protected]>
Date:   Sun Oct 26 09:47:29 2025 -0700

    Add instructions on how to obtain Brand Logo Client ID API (we-promise#234)

    * Add instructions on how to obtain Brand Logo Client ID API

    Signed-off-by: ampersandru <[email protected]>

    * updated html based on recommendations

    Signed-off-by: ampersandru <[email protected]>

    * added rel="noopener noreferrer" to links

    Signed-off-by: ampersandru <[email protected]>

    ---------

    Signed-off-by: ampersandru <[email protected]>

commit 0b393a0
Author: OrangeDrangon <[email protected]>
Date:   Sun Oct 26 11:58:26 2025 -0400

    add custom s3 support storage config option (we-promise#239)

    Options are documented here including an example
    on how to set a custom endpoint:

    https://guides.rubyonrails.org/active_storage_overview.html#s3-service-amazon-s3-and-s3-compatible-apis

commit fea228d
Author: luckyPipewrench <[email protected]>
Date:   Sun Oct 26 10:50:45 2025 -0400

    Simplefin sync improvements (we-promise#240)

    * Fix syncing issues with new connections and accounts..

    - Keep SimpleFin institution metadata strictly per account (`simplefin_accounts.org_data`).
    - Relax `simplefin_items` institution constraints to allow creating items before org data exists.
    - Remove code that copied the first account’s `org` onto `simplefin_items`.

    * Improve Simplefin Sync
    •
    SimpleFin: family “Sync” includes SimpleFin items; importer does unbounded discovery (with pending=1 fallback) before windowed fetch, for both regular and first syncs.
    •
    Stop populating item‑level institution fields; keep institution metadata per account.
    •
    Relax NOT NULL on item institution fields.
    •
    Post‑sync dashboard broadcasts are now guarded (UI cannot fail the job).
    •
    Show a friendly “daily refresh limit” banner on the SimpleFin card when the latest sync is rate‑limited.
    •
    Add bin/rails sure:simplefin:debug[ITEM_ID] to print latest sync, snapshot account count, simplefin_accounts count, and unlinked list.

    * Fixed double‑quoted strings, spacing around array brackets and commas

    * chore: ignore local .junie files

    * - Broadcast error logs now include full backtraces
    - SimpleFin discovery logic deduplicated fixed
    - app/models/simplefin_item/importer.rb
    --Added a concise docstring for perform_account_discovery describing purpose, steps, and side‑effects.
    --Added a docstring for fetch_accounts_data describing params and return value.

commit f9f6274
Author: Juan José Mata <[email protected]>
Date:   Sat Oct 25 22:57:49 2025 +0200

    Make logo work in dark mode

    Signed-off-by: Juan José Mata <[email protected]>

commit 1ee20ab
Author: Copilot <[email protected]>
Date:   Sat Oct 25 22:23:28 2025 +0200

    Eliminate code duplication in OIDC identity creation (we-promise#230)

    * Eliminate duplication by using create_from_omniauth method

    - Updated OidcIdentity.create_from_omniauth to set last_authenticated_at
    - Refactored OidcAccountsController to use create_from_omniauth instead of direct create! calls
    - Updated test to verify last_authenticated_at is set by create_from_omniauth

    Co-authored-by: jjmata <[email protected]>

    * Extract auth hash building into private helper method

    - Added build_auth_hash helper method to eliminate OpenStruct creation duplication
    - Both create_link and create_user actions now use the same helper

    Co-authored-by: jjmata <[email protected]>

    * Linter fix

    * Fix button style on OIDC link step

    * Fix dark mode styles

    ---------

    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: jjmata <[email protected]>
    Co-authored-by: Juan José Mata <[email protected]>

commit b24b102
Author: luckyPipewrench <[email protected]>
Date:   Fri Oct 24 14:41:33 2025 -0400

    Fix rounding issue (we-promise#226)

    Remove rounding from transactions.

commit 03cac95
Author: soky srm <[email protected]>
Date:   Fri Oct 24 19:39:42 2025 +0200

    Category improvements (we-promise#232)

    * Category improvements

    - Updated default categories to a more inclusive set
    - Updated default icon set for categories
    - Updated default categories colors to better separate then.

    * FIX tests

    * Better color pallettes for a few

commit 962ddd1
Author: Juan José Mata <[email protected]>
Date:   Fri Oct 24 19:25:36 2025 +0200

    Refresh README with new logo and LLM conversation in screenshot

    Signed-off-by: Juan José Mata <[email protected]>

commit b001d1c
Author: Marc <[email protected]>
Date:   Fri Oct 24 19:02:54 2025 +0200

    I have created a one click deploy button for railway users 🧙‍♂️ (we-promise#228)

    * Add Railway deployment button to README

    Signed-off-by: Marc <[email protected]>

commit 4ba8f32
Author: Juan José Mata <[email protected]>
Date:   Fri Oct 24 18:11:31 2025 +0200

    Fix production OIDC regression

    Signed-off-by: Juan José Mata <[email protected]>

commit 768e85c
Author: Juan José Mata <[email protected]>
Date:   Fri Oct 24 16:07:45 2025 +0200

    Add OpenID Connect login support (we-promise#77)

    * Add OpenID Connect login support
    * Add docs for OIDC config with Google Auth
    * Use Google styles for log in
    - Add support for linking existing account
    - Force users to sign-in with passoword first, when linking existing accounts
    - Add support to create new user when using OIDC
    - Add identities to user to prevent account take-ver
    - Make tests mocking instead of being integration tests
    - Manage session handling correctly
    - use OmniAuth.config.mock_auth instead of passing auth data via request env
    * Conditionally render Oauth button

    - Set a config item `configuration.x.auth.oidc_enabled`
    - Hide button if disabled

    ---------

    Signed-off-by: Juan José Mata <[email protected]>
    Signed-off-by: soky srm <[email protected]>
    Co-authored-by: sokie <[email protected]>

commit d51ba51
Author: Copilot <[email protected]>
Date:   Fri Oct 24 13:33:06 2025 +0200

    Fix Twelve Data API parsing errors causing "Current Market Price Unknown" (we-promise#224)

    * Add tests and fix for Twelve Data API parsing errors
    * Fix search_securities to handle nil data key

    ---------

    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: jjmata <[email protected]>
    Co-authored-by: Juan José Mata <[email protected]>

commit a8f318c
Author: Copilot <[email protected]>
Date:   Fri Oct 24 12:04:19 2025 +0200

    Fix "Messages is invalid" error for Ollama/custom LLM providers and add comprehensive AI documentation (we-promise#225)

    * Add comprehensive AI/LLM configuration documentation
    * Fix Chat.start! to use default model when model is nil or empty
    * Ensure all controllers use Chat.default_model for consistency
    * Move AI doc inside `hosting/`
    * Probably too much error handling

    ---------

    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: jjmata <[email protected]>
    Co-authored-by: Juan José Mata <[email protected]>

commit 4f44630
Author: Juan José Mata <[email protected]>
Date:   Fri Oct 24 00:16:29 2025 +0200

    Bump version to 0.6.5-alpha.1

    Signed-off-by: Juan José Mata <[email protected]>

commit bb364fa
Author: soky srm <[email protected]>
Date:   Fri Oct 24 00:08:59 2025 +0200

    LLM cost estimation (we-promise#223)

    * Password reset back button also after confirmation

    Signed-off-by: Juan José Mata <[email protected]>

    * Implement a filter for category (we-promise#215)

    - Also implement an is empty/is null condition.

    * Implement an LLM cost estimation page

    Track costs across all the cost categories: auto categorization, auto merchant detection and chat.
    Show warning with estimated cost when running a rule that contains AI.

    * Update pricing

    * Add google pricing

    and fix inferred model everywhere.

    * Update app/models/llm_usage.rb

    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    Signed-off-by: soky srm <[email protected]>

    * FIX address review

    * Linter

    * Address review

    - Lowered log level
    - extracted the duplicated record_usage method into a shared concern

    * Update app/controllers/settings/llm_usages_controller.rb

    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    Signed-off-by: soky srm <[email protected]>

    * Moved attr_reader out of private

    ---------

    Signed-off-by: Juan José Mata <[email protected]>
    Signed-off-by: soky srm <[email protected]>
    Co-authored-by: Juan José Mata <[email protected]>
    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
alessiocappa pushed a commit to alessiocappa/sure that referenced this pull request Nov 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants