Add fixed monthly expense grouping setting - #530
Open
Dustin-ONeil wants to merge 1 commit into
Open
Conversation
Dustin-ONeil
commented
Jun 24, 2026
Dustin-ONeil
left a comment
Author
There was a problem hiding this comment.
Reviewed for common GPT-related issues and unnecessary bloat. Let me know whether this feels lightweight enough and covers the right use cases. I'm happy to redirect the implementation as needed
Ecklebe
pushed a commit
to Ecklebe/spliit
that referenced
this pull request
Jul 19, 2026
Ecklebe
pushed a commit
to Ecklebe/spliit
that referenced
this pull request
Jul 19, 2026
…#493 + spliit-app#530 api.test.ts and _app.test.ts (added by spliit-app#493) predate spliit-app#530's new required fixedExpenseDateGroups field on GroupFormValues.
Ecklebe
pushed a commit
to Ecklebe/spliit
that referenced
this pull request
Jul 19, 2026
Adds a generic import architecture (format registry + detection) with Spliit-JSON as the first adapter, plus UI (upload dropzone, analysis/ progress/result views) and a batched tRPC import flow. This is what lets you export a group as JSON from spliit.app (or any other Spliit instance) and import it here as a new group - the two instances have entirely separate databases, so this was previously not possible at all (the 'Add group by URL' button only looks up groups in your own instance, it was never a cross-instance fetch). Conflict resolution notes: - expense-form.tsx: pr-472's side was stale noise (identical logic to our merge-base for this exact block, just missing spliit-app#367's EVENLY-for- reimbursements fix and spliit-app#499's imageId-based document ids) - kept our current version entirely rather than porting anything from pr-472 here. - create.procedure.ts: pr-472 intentionally changed groups.create's return shape from {groupId} to the full group object ({id, ...}) - its own new create-group.tsx UI code depends on this. Updated the stale test helpers (_app.test.ts, batch-api.ts) to match rather than reverting the shape. - Dropped the unconditionally-registered 'debug' import format (formats/debug-format.ts + its fixture) - a manual-testing aid with zero test coverage of its own that would have shipped live in production with no gate, matching content starting with a literal 'DEBUG_IMPORT'/'DEBUG_ERRORS' prefix. Low risk (it can only emit synthetic error messages, not fabricate real data) but provided nothing for us and no reason to ship it. - process-batch.procedure.ts imported 'nanoid' directly, which is ESM-only and broke Jest ('Must use import to load ES Module'). Replaced both call sites with this file's own randomId() (already the established replacement per the spliit-app#165 nanoid cleanup). - The same recurring cross-PR staleness pattern hit twice more: the new import-group.procedure.ts's own createGroup() call and spliit-json.ts's own expense-mapping function both predated spliit-app#530's now-required fixedExpenseDateGroups/location fields - added both. - spliit-json.test.ts's own test fixture caught this for real (not just gracefully skipped): 'should parse a valid export correctly' failed until spliit-json.ts set location on parsed expenses. Verified: check-types clean, all 206 tests pass, and (given the Turbopack/leaflet build failure found earlier wasn't caught by either of those) a full 'npm run build' also completes successfully.
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
Adds an opt-in group-wide setting to display expense date headers as fixed calendar-month buckets instead of the existing relative buckets.
By default, groups continue using the current behavior with labels like “This week”, “Earlier this month”, and “Last month”. When enabled, expenses are grouped by calendar month, which is more useful for recurring monthly expenses, roommates, and shared bills.
Changes
fixedExpenseDateGroupstoGroupwith a default offalseexpense.expenseDateTesting
npm testnpm run check-typesnpm run lintTransparency Note
This is my first request using Codex 5.5 at highest enterprise setting for implementation help. I’m trying it out and I want to be transparent so reviewers can flag anything that feels off or low-quality.