Conversation
- Extract CategorySpend domain helper with override-then-Plaid-primary resolution; add unit tests for the bug BudgetsView had (userCategory-only). - Rewrite BudgetsView: only categories with CDBudget, jade/brass/coral meters, left-to-spend hero, cumulative pace chart, BudgetPacing projection. - Add EmptyStorePrompt and centralise fileImporter in AppShell for iOS + macOS. - Wire import CTA into Dashboard, Accounts, Review, Recurring, Budgets, Ledger. - Reorder PhoneTabs so Overview, Ledger, and Budgets are direct tabs. - CategoriesView uses CategorySpend so Budgets spent matches Categories. CloudKit remains off (local NSPersistentContainer). xcodebuild unavailable on the Linux cloud VM — run apple/scripts/test.sh on macOS to verify. Co-authored-by: Kevin George <kGeee@users.noreply.github.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Use CategorySpend.spent(for:in:) instead of subscripting totals directly, so XCTAssertEqual gets a Double rather than Double?. Co-authored-by: Kevin George <kGeee@users.noreply.github.com>
- CategoryMapping.countsTowardSpend skips group=transfer (incl. Reimbursable) and unmapped TRANSFER_* / LOAN_PAYMENTS Plaid primaries — matches web queries. - CategorySpend / Dashboard / Budgets / Categories all use that filter so Overview month spent and "where it went" no longer include transfers. - MeterBar draws past the track when over 100%; rows show 1.3×/10× plus leftover/over copy instead of a capped full bar. - Domain tests pin transfers and reimbursable are not spend. Co-authored-by: Kevin George <kGeee@users.noreply.github.com>
This was referenced Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Finishes the Phase 1 native slice on
apple/without touching working Dashboard/Accounts/Review/Recurring implementations. Fixes Budgets spend resolution, first-run import CTAs, then two marketing bugs: transfers in Overview spend, and capped budget meters.Changes
Budgets correctness
CategorySpenddomain helper (override wins, else Plaid-primary → category id) with unit tests pinning the old bug.BudgetsView: only categories with aCDBudgetrow (read-only limits), per-category meters, hero left-to-spend + cumulative pace chart +BudgetPacingprojection.CategoriesViewuses the sameCategorySpend.totalspath so Budgets spent matches Categories for a category this month.Transfers / reimbursable out of spend
CategoryMapping.countsTowardSpendskipsgroup = transfer(covers Reimbursable) and unmappedTRANSFER_IN/TRANSFER_OUT/LOAN_PAYMENTS— matches web.DashboardView), Budgets totals/pace, Categories, andCategorySpend.Budget meter overflow
MeterBardraws past the track when over 100% (10× ≠ slightly-over).1.3×/10×plus leftover / over-by copy (no all-caps OVER BUDGET hero).First-run / dual-destination import
EmptyStorePromptwith a direct Import budgetr.db… button.fileImporterinAppShell; propagatetriggerImportvia environment.PhoneTabs: Overview, Ledger, and Budgets are direct tabs.Unchanged
Testing
Could not run
xcodebuildon the Linux cloud VM. On macOS:New/extended tests:
CategorySpendTests(incl. transfer/reimbursable exclusion),BudgetUtilisationTests(multiplier labels),CategoryMappingTestsspend rules.