Skip to content

Conversation

@sokie
Copy link
Collaborator

@sokie sokie commented Oct 24, 2025

  • Updated default categories to a more inclusive set
  • Updated default icon set for categories
  • Updated default categories colors to better separate then.
Screenshot 2025-10-24 at 17 56 44 screencapture-localhost-3000-categories-2025-10-24-17_54_31

Summary by CodeRabbit

  • Updates
    • Refreshed seed category set: many categories added, removed, renamed, recolored and reassigned icons/classifications for clearer organization.
  • Style
    • Internal formatting of icon lists cleaned up for readability (no change to visible icons).
  • Tests
    • Bootstrap test expectation updated to reflect the new initial category count.

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

coderabbitai bot commented Oct 24, 2025

Walkthrough

Reformatted icon_codes and substantially revised default_categories seed data in app/models/category.rb (many entries added, removed, renamed, recolored, or reclassified). Updated test expectation in test/controllers/categories_controller_test.rb to reflect bootstrap-created Category count change (12 → 19).

Changes

Cohort / File(s) Summary
Category model data updates
app/models/category.rb
Reformatted the icon_codes array; replaced the prior default_categories set with a substantially revised list (many new categories added, several removed or renamed, and multiple color/icon/classification values changed). No public API or method signatures modified.
Test expectation update
test/controllers/categories_controller_test.rb
Adjusted bootstrap test assertion to expect 19 Category records created by bootstrap! instead of 12 to match the updated seed data.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

Poem

🐰
I hopped through lists of color and code,
Rearranged nests along the road,
New names and icons found their place,
Seeds now sprout with brighter grace,
Bootstrap hums — I bound and bode.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
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.
Title Check ❓ Inconclusive The title "Category improvements" is vague and generic, failing to convey specific information about the changeset. While it relates to the general subject matter (categories), it uses a non-descriptive term that could apply to any modification to the category model—whether bug fixes, refactoring, or feature additions. A teammate scanning the commit history would not understand that the primary changes involve expanding the default category set from 12 to 19 entries, updating category colors for better separation, and refreshing the icon set. The title lacks the specificity and clarity needed to communicate the main intent of the changes. Consider revising the title to be more specific about the actual improvements made. For example, "Expand default categories and update icons and colors" or "Add new categories and improve category organization" would better communicate the main changes. This would help reviewers and future maintainers quickly understand the scope of modifications from the PR title alone.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 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: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 768e85c and ebb32bb.

📒 Files selected for processing (1)
  • app/models/category.rb (2 hunks)
🧰 Additional context used
📓 Path-based instructions (9)
app/models/**/*.rb

📄 CodeRabbit inference engine (.cursor/rules/project-design.mdc)

Domain models should not call Provider::Registry directly; use a Provided concern within the model’s namespace to select providers and expose convenience methods

Use ActiveRecord validations for forms and complex domain constraints.

app/models/**/*.rb: Place business logic in POROs and model classes under app/models
Models should answer questions about themselves (e.g., prefer account.balance_series over service objects)
Implement complex validations and business logic with ActiveRecord validations
Model-level validations may mirror DB constraints but are not strictly required

Files:

  • app/models/category.rb
app/**/*.rb

📄 CodeRabbit inference engine (AGENTS.md)

Place Rails application Ruby code (models, controllers, services, jobs, mailers, components) under app/

Files:

  • app/models/category.rb
**/*.rb

📄 CodeRabbit inference engine (AGENTS.md)

Ruby style: 2-space indentation; snake_case for methods/variables; CamelCase for classes/modules

Files:

  • app/models/category.rb
**/*.{rb,js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{rb,js,jsx,ts,tsx}: Make changes atomic, testable, and explain their impact briefly in code suggestions.
Respect existing tests and add tests when changing critical logic.

Files:

  • app/models/category.rb
**/app/**/*.{rb,erb,js,css}

📄 CodeRabbit inference engine (CLAUDE.md)

Push Rails to its limits before adding new dependencies; a strong technical/business reason is required for new dependencies.

Files:

  • app/models/category.rb
**/app/models/**/*.rb

📄 CodeRabbit inference engine (CLAUDE.md)

Business logic should primarily reside in models; use concerns and POROs for organization.

Files:

  • app/models/category.rb
**/*.{rb,erb,haml,slim}

📄 CodeRabbit inference engine (.cursor/rules/general-rules.mdc)

**/*.{rb,erb,haml,slim}: Use Current.user for the current user; do not use current_user
Use Current.family for the current family; do not use current_family
Ignore i18n methods; hardcode strings in English for now (do not use I18n.t, t, or similar)

Files:

  • app/models/category.rb
app/{helpers,models}/**/*.rb

📄 CodeRabbit inference engine (.cursor/rules/project-conventions.mdc)

Format currencies, numbers, and dates on the server side (Ruby) before sending to the client

Files:

  • app/models/category.rb
app/{models,controllers,views}/**/*.{rb,erb}

📄 CodeRabbit inference engine (.cursor/rules/project-conventions.mdc)

Avoid N+1 queries

Files:

  • app/models/category.rb
🔇 Additional comments (3)
app/models/category.rb (3)

50-63: LGTM! Excellent formatting improvement.

The multi-line format significantly improves readability and maintainability of the icon list. The alphabetical organization makes it easy to find and verify icon names.


107-107: Verify the classification of "Savings & Investments" as an expense.

Classifying "Savings & Investments" as an "expense" is semantically unusual in accounting terms, as these are typically considered transfers or asset allocations rather than expenses. Please verify this aligns with the product requirements and user expectations for how savings and investment contributions should be categorized and reported.


66-74: Existing categories won't receive the new colors and icons.

The bootstrap! method uses find_or_create_by! which means existing categories with matching names won't be updated with the new colors, icons, or classifications. This could lead to visual inconsistencies for users who bootstrapped their database before this change. Consider whether a migration or update mechanism is needed to sync existing categories with the new defaults.

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: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ebb32bb and f12c2ea.

📒 Files selected for processing (1)
  • test/controllers/categories_controller_test.rb (1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
test/**/*_test.rb

📄 CodeRabbit inference engine (AGENTS.md)

Name Minitest files with *_test.rb and mirror the app/ structure under test/

test/**/*_test.rb: ALWAYS use Minitest + fixtures + Mocha for tests; NEVER RSpec or FactoryBot.
Use Mocha for mocking in tests when necessary.
Use VCR for external API tests.

test/**/*_test.rb: Always use Minitest for tests; do not use RSpec
Do not use factories (e.g., FactoryBot) in tests; rely on fixtures instead
For tests needing many records, use Rails helpers to construct data and inline the creation in the test
Only write tests for critical and important code paths
Avoid tests that merely verify framework/ActiveRecord behavior
Test boundaries correctly: for queries, assert returned values; for commands, assert collaborators are called with correct params
Never test the implementation details of one class in another class’s test suite
Use the mocha gem for stubs and mocks
Prefer OpenStruct for mock instances; use a mock class for complex cases
Only mock what’s necessary; don’t mock return values unless they are under test

Files:

  • test/controllers/categories_controller_test.rb
**/*.rb

📄 CodeRabbit inference engine (AGENTS.md)

Ruby style: 2-space indentation; snake_case for methods/variables; CamelCase for classes/modules

Files:

  • test/controllers/categories_controller_test.rb
**/*.{rb,js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{rb,js,jsx,ts,tsx}: Make changes atomic, testable, and explain their impact briefly in code suggestions.
Respect existing tests and add tests when changing critical logic.

Files:

  • test/controllers/categories_controller_test.rb
**/test/**/*.rb

📄 CodeRabbit inference engine (CLAUDE.md)

**/test/**/*.rb: ALWAYS use Minitest and fixtures for Ruby tests; NEVER RSpec or factories.
Only test critical and important code paths; system tests should be used sparingly for critical user flows.

Files:

  • test/controllers/categories_controller_test.rb
**/*.{rb,erb,haml,slim}

📄 CodeRabbit inference engine (.cursor/rules/general-rules.mdc)

**/*.{rb,erb,haml,slim}: Use Current.user for the current user; do not use current_user
Use Current.family for the current family; do not use current_family
Ignore i18n methods; hardcode strings in English for now (do not use I18n.t, t, or similar)

Files:

  • test/controllers/categories_controller_test.rb
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: ci / test

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: 0

🧹 Nitpick comments (2)
app/models/category.rb (2)

50-63: Icon list looks solid; sample names verified against Lucide.

Spot-checked icons exist: ice-cream-cone, trees, bed-single, hand-helping, drama, landmark. Looks good.

  • Optional: move this to a frozen constant (ICON_CODES) and sort alphabetically for diffability.

References: ice-cream-cone, trees, bed-single, hand-helping, drama, landmark. (lucide.dev)


87-107: Good improvement: unique, clearer category palette; confirm classification and add guardrail.

  • Colors now appear unique across defaults; aligns with the PR goal of better separation.
  • Confirm “Savings & Investments” being classified as "expense" is intentional for reporting.
  • Recommend adding a simple inclusion validation to prevent typos in future seed edits.

Example:

# keep optional if `uncategorized` stays unsaved
validates :classification, inclusion: { in: %w[income expense] }, allow_nil: true
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f12c2ea and cef3005.

📒 Files selected for processing (1)
  • app/models/category.rb (2 hunks)
🧰 Additional context used
📓 Path-based instructions (9)
app/models/**/*.rb

📄 CodeRabbit inference engine (.cursor/rules/project-design.mdc)

Domain models should not call Provider::Registry directly; use a Provided concern within the model’s namespace to select providers and expose convenience methods

Use ActiveRecord validations for forms and complex domain constraints.

app/models/**/*.rb: Place business logic in POROs and model classes under app/models
Models should answer questions about themselves (e.g., prefer account.balance_series over service objects)
Implement complex validations and business logic with ActiveRecord validations
Model-level validations may mirror DB constraints but are not strictly required

Files:

  • app/models/category.rb
app/**/*.rb

📄 CodeRabbit inference engine (AGENTS.md)

Place Rails application Ruby code (models, controllers, services, jobs, mailers, components) under app/

Files:

  • app/models/category.rb
**/*.rb

📄 CodeRabbit inference engine (AGENTS.md)

Ruby style: 2-space indentation; snake_case for methods/variables; CamelCase for classes/modules

Files:

  • app/models/category.rb
**/*.{rb,js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{rb,js,jsx,ts,tsx}: Make changes atomic, testable, and explain their impact briefly in code suggestions.
Respect existing tests and add tests when changing critical logic.

Files:

  • app/models/category.rb
**/app/**/*.{rb,erb,js,css}

📄 CodeRabbit inference engine (CLAUDE.md)

Push Rails to its limits before adding new dependencies; a strong technical/business reason is required for new dependencies.

Files:

  • app/models/category.rb
**/app/models/**/*.rb

📄 CodeRabbit inference engine (CLAUDE.md)

Business logic should primarily reside in models; use concerns and POROs for organization.

Files:

  • app/models/category.rb
**/*.{rb,erb,haml,slim}

📄 CodeRabbit inference engine (.cursor/rules/general-rules.mdc)

**/*.{rb,erb,haml,slim}: Use Current.user for the current user; do not use current_user
Use Current.family for the current family; do not use current_family
Ignore i18n methods; hardcode strings in English for now (do not use I18n.t, t, or similar)

Files:

  • app/models/category.rb
app/{helpers,models}/**/*.rb

📄 CodeRabbit inference engine (.cursor/rules/project-conventions.mdc)

Format currencies, numbers, and dates on the server side (Ruby) before sending to the client

Files:

  • app/models/category.rb
app/{models,controllers,views}/**/*.{rb,erb}

📄 CodeRabbit inference engine (.cursor/rules/project-conventions.mdc)

Avoid N+1 queries

Files:

  • app/models/category.rb
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: ci / test
🔇 Additional comments (1)
app/models/category.rb (1)

66-74: Scoping concern is valid but implementation is currently functional via association scope—consider as defensive refactor rather than blocker.

Current.family.categories.bootstrap! calls the method on an association scope, which provides implicit family filtering. However, the method doesn't make family scoping explicit in its signature, relying instead on Rails association proxy behavior. While the test passes, this design is fragile.

The suggested fix improves clarity and prevents misuse:

-    def bootstrap!
-      default_categories.each do |name, color, icon, classification|
-        find_or_create_by!(name: name) do |category|
+    def bootstrap!(family: Current.family)
+      default_categories.each do |name, color, icon, classification|
+        find_or_create_by!(family: family, name: name) do |category|
           category.color = color
           category.classification = classification
           category.lucide_icon = icon
         end
       end
     end

Also update the controller call from Current.family.categories.bootstrap! to Current.family.categories.bootstrap!(family: Current.family) (or just bootstrap! since the default matches).

@jjmata jjmata added the enhancement New feature or request label Oct 24, 2025
@jjmata jjmata self-requested a review October 24, 2025 17:32
@jjmata
Copy link
Collaborator

jjmata commented Oct 24, 2025

Definitely a quick win that adds to the variety of icons available as discussed in #218 ... so merging it today given the simplicity.

Since we're discussing OCD as it relates to categories ... my 2 cents' for @sokie and others who might want to react. :-)

Finding the right balance of categories to get started is hard: too many and you scare the user away, too few and people think "not powerful enough for me!" and then there is the whole OCD around colors/organization.

After many years of Quicken usage, I do like my subcategories (cut orthogonally by tags ... a discussion for another day!) and the code has a little known rake demo_data:sample task that creates what I find to be a very beautiful set of categories like so:
Screenshot 2025-10-24 at 7 36 54 PM

@jjmata
Copy link
Collaborator

jjmata commented Oct 24, 2025

What I like in that list is the grouping by color, and also simplicity in the number of them. We could argue for ages about what the right list is (and maybe how it should be dependent on a question we ask during onboarding, right?) but like I said this is great already as is so taking it in right away! 🚀 Should probably move this rant to #218 anyway. ;-)

@jjmata jjmata merged commit 03cac95 into we-promise:main Oct 24, 2025
6 checks passed
@sokie
Copy link
Collaborator Author

sokie commented Oct 24, 2025

Definitely a quick win that adds to the variety of icons available as discussed in #218 ... so merging it today given the simplicity.

Since we're discussing OCD as it relates to categories ... my 2 cents' for @sokie and others who might want to react. :-)

Finding the right balance of categories to get started is hard: too many and you scare the user away, too few and people think "not powerful enough for me!" and then there is the whole OCD around colors/organization.

After many years of Quicken usage, I do like my subcategories (cut orthogonally by tags ... a discussion for another day!) and the code has a little known rake demo_data:sample task that creates what I find to be a very beautiful set of categories like so: Screenshot 2025-10-24 at 7 36 54 PM

Damn I didn't know about that command. I do really like the sub categories.
@jjmata I would love to have sure react more to user input where registering, so you can have kinda like a scale from power user down to super simple. And then expand categories also to have sub categories and stuff.
In the future also show more sections or maybe unlock some "advanced " features.
I think it would be amazing

ByteBard11 pushed a commit to ByteBard11/sure that referenced this pull request Oct 25, 2025
* 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
alessiocappa added a commit to alessiocappa/sure that referenced this pull request Oct 26, 2025
* 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
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
* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants