Changelog
All notable changes to SplitDuo will be documented in this file.
Generated with git-cliff from Conventional Commits.
[1.16.0] - 2026-09-02
Features
- (settlements) Typed-expense settlements with API, settle UX, tests
- (release) Sync backend, frontend and api spec versions on release
[1.15.4] - 2026-08-28
Bug Fixes
- (stats) Gross semantics for YouOwe/YoureOwed + validate unassigned payer in alias mode
Code Refactoring
- Resolve stale backend TODOs (CSV parsers + user stats relocation)
- (stats) Separate user dashboard stats by alias vs non-alias mode
[1.15.3] - 2026-08-28
Bug Fixes
- (stats) Rename expense count field and drop currency formatting
[1.15.2] - 2026-08-26
Bug Fixes
- (ui) Resolve UI/UX review findings (a11y, i18n, currency, tokens)
[1.15.1] - 2026-08-24
Bug Fixes
- (ui) Avatar initials render as clean circle in dark mode
- Group member list does not show avatars after upload
[1.15.0] - 2026-08-24
Features
- Expense receipt attachments
- Split expense by percentage
- User profile picture with initials fallback
Testing
- Close backend coverage gaps (imports + background jobs)
[1.14.0] - 2026-08-18
Bug Fixes
- (expenses) Correct alias-mode dot color and split-among layout
- (ci) Scope aggregate-coverage manual rule to MR events only
Build System
- Mark verify and security jobs interruptible to save runner minutes
Features
- (settle) Add dedicated settle page
Styling
- (expenses) Make AI scan button more discoverable
[1.13.0] - 2026-08-15
Bug Fixes
- (groups) SQL aggregation for alias balances + created-by bug
- (users) Handle alias-mode balances in user stats endpoint
Features
- (ui) Add logo to header and enhance login page
[1.12.0] - 2026-08-15
Bug Fixes
- Align backend default admin creds with docker-compose
Code Refactoring
- (ci) Regroup stages into verify/test/coverage/build/release
Features
- (pwa) Generate icons from SVG logo via @vite-pwa/assets-generator
- (cache) In-memory cache for backend aggregates
Testing
- (frontend) Add Vitest test infrastructure and regression suite
[1.11.1] - 2026-08-06
Bug Fixes
- (ci) Exclude .git and build artifacts from trufflehog scan
Build System
- (security) Add trivy and trufflehog scans to verify stage
[1.11.0] - 2026-08-06
Bug Fixes
- (frontend) Inline GenericModal props to fix SFC type resolution
Features
- (scripts) Add aggregated security scan runner
[1.10.0] - 2026-08-06
Bug Fixes
- (ci) Pull upstream artifacts into aggregate-coverage job
- (ci) Expose cobertura files as artifact paths for downstream jobs
- (frontend) Make expense form buttons full-width on mobile
Build System
- (test) Skip integration-tests on release commits to main
- Aggregate coverage, gate build on tests, tag-only build
- (frontend) Bump apexcharts to v6, tree-shake to bar+donut
Features
- Migrate frontend from JavaScript to TypeScript
[1.9.2] - 2026-08-01
Bug Fixes
- (docker) Enable globalization in alpine runtime for en/it cultures
Build System
- (verify) Skip lint and unit-tests on release commits to main
[1.9.1] - 2026-08-01
Bug Fixes
- (ci) Add JunitXml.TestLogger to unit test project
Styling
- Wrap arrow arg parens in nuxt.config
[1.9.0] - 2026-08-01
Bug Fixes
- (scripts) Keep backfill-releases scratch files in repo root
Build System
- Add verify stage and document pipeline
Features
- I18n
[1.8.0] - 2026-07-31
Build System
- (test) Skip integration tests on version tags
- (test) Use sdk image directly to fix nuget access on gitlab runners
- (test) Scope after_script to build job and fix test script line continuations
- (test) Use canonical dind TLS config and drop redundant service alias
- (build) Scope before_script to build job to avoid leaking docker login to test job
- (test) Fix junit report path — logger writes next to test project, not results dir
- (release) Create GitLab release on v* tags
- (release) Create GitHub release on mirrored repo for v* tags
Code Refactoring
- (admin) Extract pending user card to component
Features
- (groups) Allow admins to promote and demote members
- (users) Allow system admins to promote and demote users
Testing
- (integration) Add JunitXml.TestLogger for junit report in CI
- (integration) Bump JunitXml.TestLogger to 8.0.0
- (integration) Pin JunitXml.TestLogger to 7.1.0 for Testing.Platform 1.x compat
- (coverage) Add coverlet to unit tests and run-coverage wrapper
- (groups) Add missing ChangeMemberRole guard tests and document lessons learned
[1.7.2] - 2026-07-26
Bug Fixes
- (auth) Escape braces in password complexity error message
- (auth,aliases) Block deleted users from login and return assigned member in alias DTO
- (imports) Preserve conflict status on duplicate and rollback transaction on alias-mode guard
- (groups) Rework pending invitation card for mobile and extract shared component
Build System
- (test) Add manual integration tests job with cobertura coverage report
Testing
- (auth,invitations) Add integration tests for auth and invitations
- (groups,balances) Add integration tests for group members and balances
- (aliases,2fa,users) Add integration tests for aliases, 2FA, and user profile
- (imports) Add integration tests for import analyze, map, and process flow
[1.7.1] - 2026-07-25
Bug Fixes
- (expenses) Validate enum values and preserve category/payment mode on empty update
Testing
- (groups) Add integration tests for Groups CRUD
- (expenses) Add integration tests for Expenses CRUD
[1.7.0] - 2026-07-25
Features
- User settings
[1.6.4] - 2026-07-24
Bug Fixes
- (expenses) Treat comma as decimal separator in amount inputs
[1.6.3] - 2026-07-24
Features
- (frontend) Carousel for dashboard recap stats on mobile
[1.6.2] - 2026-07-24
Bug Fixes
- (frontend) Add dark-mode body background for Android nav bar sampling
[1.6.1] - 2026-07-24
Bug Fixes
- (frontend) Round currency display to 2 decimals and fix stat card overflow
- (frontend) Set color-scheme to follow app dark mode for Android nav bar
[1.6.0] - 2026-07-23
Features
- Group alias
[1.5.0] - 2026-07-20
Features
- (frontend) Proactive token refresh before expiry
[1.4.0] - 2026-07-20
Bug Fixes
- (frontend) Sync auth token state to prevent stale retry after refresh
Features
- (frontend) Add loading indicator and SPA loading template
[1.3.1] - 2026-07-20
Bug Fixes
- (frontend) Preserve selected participants when editing expense
[1.3.0] - 2026-07-20
Features
- (frontend) Rework group stats and recap UI with hierarchy
[1.2.0] - 2026-07-19
Bug Fixes
- (release) Bump package.json alongside VERSION in cat-v config
Features
- (frontend) Add PWA install prompt, offline banner, and iOS meta tags
[1.1.0] - 2026-07-19
Build System
- (release) Use commit-and-tag-version for version bumps
Features
- (frontend) Unify back navigation with useSmartBack composable
[1.0.0] - 2026-07-19
Bug Fixes
- (scripts) Add selinux z mount label for container scans
- (backend) Resolve all nullable warnings
- (auth) Use UTC DateTime for JWT expiry
- (scripts) Tag bump commit after changelog amend
Code Refactoring
- (ui) Gate destructive actions behind overflow menu and confirmation
Features
- (scripts) Add trivy and trufflehog security scan scripts
Styling
- (frontend) Apply UI consistency fixes across all pages
- (frontend) Polish desktop and tablet UI layout
[0.1.38] - 2026-07-12
Bug Fixes
- (auth) Use role claim name to match MapInboundClaims=false
[0.1.37] - 2026-07-12
Bug Fixes
- (docker) Restore Api project only to skip missing test csprojs
[0.1.36] - 2026-07-12
Code Refactoring
- (backend) Inject TimeProvider for testable time-dependent code
Features
- (auth) Rework auth with lockout, multi-device refresh, security stamp
[0.1.35] - 2026-07-11
Bug Fixes
- (docker) Copy pnpm-workspace.yaml for build script approval
[0.1.33] - 2026-04-21
Bug Fixes
- Replace UiDatePicker with UiInputDate for date filters
[0.1.32] - 2026-04-21
Bug Fixes
- Update app description to reflect broader user base
- Update SameSite attribute for cookies to ‘lax’ for better compatibility
- Add middleware to redirect authenticated users to dashboard
[0.1.31] - 2026-04-17
Bug Fixes
- Update button labels to use span for better responsiveness
- Implement 3-decimal precision for expense splits and update currency formatting
[0.1.30] - 2026-04-17
Features
- Add rate limiting for receipt scanning and validate receipt amount
[0.1.29] - 2026-04-16
Bug Fixes
- Ensure color is set for notification messages
[0.1.28] - 2026-04-16
Features
- Implement AI receipt scanning feature
[0.1.27] - 2026-04-15
Features
- (expense) Replace UiDatePicker with UiInputDate component
[0.1.26] - 2026-04-15
Features
- (health) Add health checks for PostgreSQL database
[0.1.25] - 2026-04-15
Bug Fixes
- (auth) Enhance token handling and refresh logic
[0.1.24] - 2026-04-11
Bug Fixes
- Update short name in manifest to ‘SplitDuo’
- Replace IConfiguration with IOptions for database connection in LogCleanupJob
[0.1.23] - 2026-04-11
Features
- Add pwa feature
- Replace UInput with UiDatePicker for expense date selection. Closes #4
[0.1.22] - 2026-03-23
Bug Fixes
- Change currency format from USD to EUR in formatCurrency function. Closes #2
Features
- Add dev.sh script for managing development services
- Add ToDisplayName extension method for PaymentMode enum
- Add TicketRestaurant option to PaymentMode enum and update extension method. Closes #3
[0.1.21] - 2026-02-23
Bug Fixes
- Add APP_VERSION build argument to Docker image build script
Build System
- Fix dockerfile by adding npmrc file copy
[0.1.20] - 2026-02-23
Build System
- Switch to pnpm 10
Code Refactoring
- Remove LastName from email notification templates
- Switch to otp.net library
Features
- Db migrations
- Totp 2fa challenge and remove email 2fa
- 2fa flow in frontend
- Add autofocus to TOTP input and simplify auto-submit condition
[0.1.19] - 2026-02-22
Code Refactoring
- Update email notification templates for improved clarity and tone
[0.1.18] - 2026-02-22
Features
- Email template provider
[0.1.17] - 2026-02-21
Features
- Add option to seed demo data and implement demo data seeding logic
- Implement net balance calculation for user groups and update UI accordingly
[0.1.16] - 2026-02-21
Styling
- Enhance
- Update button variants and layout for better UI consistency
- Improve layout and structure of profile page for better UI consistency
[0.1.15] - 2026-02-21
Code Refactoring
- Consolidate style
[0.1.14] - 2026-02-21
Code Refactoring
- Authentication setup and add JwtBearerOptions configuration using options pattern properly
Features
- Expenses stats charts
- Implement chart theme composable and update chart components
Styling
- Format
[0.1.13] - 2026-02-21
Bug Fixes
- Update filter title styling to use primary color
Code Refactoring
- Implement ExpenseFilterCard component
Features
- Add filters fin group expense page
- Replace UInput with UiDatePicker for date selection in ExpenseFilterCard
- Add text search functionality to expense filters
- Persiste page and filters in group index view
[0.1.12] - 2026-02-21
Bug Fixes
- Simplify API request handling by creating fetchOnce function and improving error handling
Code Refactoring
- Standardize page width
- Remove useless settlement entity
- Introduce ExpenseFilterOptions for improved expense retrieval filtering
Features
- Add Net Balance card to dashboard with dynamic color and icon
- Add skeleton components for user, group, and expense cards; implement loading state in dashboard and groups pages
[0.1.11] - 2026-02-18
Bug Fixes
- Remove filtering of “Payment” category in Splitwise CSV parser
Code Refactoring
- TabsNav component and integrate stats and expenses tabs in group page
- Implement ExpensesTab and StatsTab components for group page
Features
- Splitwise import
- Add notification system for expense and group deletions
- Group stats
[0.1.10] - 2026-02-08
Features
- Invitation system
[0.1.8] - 2026-02-07
Features
- Add “Add & Add More” button and functionality to ExpenseForm
[0.1.7] - 2026-02-01
Features
- Pass application version as build argument and display in dashboard
[0.1.4] - 2026-02-01
Build System
- Go back to node 22
[0.1.3] - 2026-02-01
Bug Fixes
- Update expense response was broken since i do not understand EF core tracking context
Build System
- Update Node.js and .NET versions in Dockerfile
Styling
- Format
[0.1.2] - 2025-10-28
Bug Fixes
- Replace UBadge with UButton for member count display
Code Refactoring
- Standardize card header
- Reorganize create group button and refresh button layout
- Remove ‘Settle Up’ quick action from dashboard
- Update revoke tokens functionality to include confirmation modal
Features
- Generic modal
- Implement password change functionality with validation and notification
- Forgot password