What's Changed
- fix(server): handle missing ContentType in attachment download by @Y8C68 in #1063
- fix(server): use correct base currency in financial reports by @abouolia in #1074
- fix(server): localize i18n column headers in CSV/XLSX/PDF exports by @abouolia in #1075
- fix(server): correct "Liabilties" typo to "Liabilities" in balance sheet by @rebekah-create in #1090
- Fix pagination params silently ignored on collection GET endpoints by @c-premus in #1089
- chore(sdk): update OpenAPI spec and generated types by @github-actions[bot] in #1091
- fix(server): prevent cross-tenant attachment access (IDOR) by @abouolia in #1093
- fix(server): prevent cross-tenant access via organization-id header by @abouolia in #1094
- fix(server): use CSPRNG for attachment S3 keys (GHSA-gj48-p5ff-g67f) by @abouolia in #1096
- fix(server): prevent SQL injection via sortOrder in DynamicListing (GHSA-hcp2-qqg6-jjpm) by @abouolia in #1097
- feat(ee): audit logs domain level by @abouolia in #1076
- chore(sdk): update OpenAPI spec and generated types by @github-actions[bot] in #1098
- fix(server): verify Plaid webhook signatures (GHSA-g56w-g54f-whq5) by @abouolia in #1095
- feat(ee): add multi-organization workspaces feature by @abouolia in #1078
- feat(ee): add workspaces feature by @abouolia in #1049
- refactor(webapp): rename store files and folders to kebab-case by @abouolia in #1100
- refactor(webapp): standardize withX HOC types with shared MapState generic and props interfaces by @abouolia in #1101
- fix(server): resolve all TypeScript errors without unsafe type casts by @abouolia in #1102
- refactor(webapp): rename query hooks to kebab-case convention by @abouolia in #1018
- feat(sdk): add table accept header to report fetchers and refactor audit log hooks by @abouolia in #1104
- refactor: convert containers default exports to named exports by @abouolia in #1105
- refactor(typescript): add proper types to Preferences container files by @abouolia in #1106
- ci: add Prettier format check GitHub Action by @abouolia in #1107
- chore(sdk): update OpenAPI spec and generated types by @github-actions[bot] in #1108
- refactor: remove Project Profitability Summary report by @abouolia in #1110
- fix(webapp): resolve TypeScript errors across components and financial statements by @abouolia in #1109
- refactor(server): replace direct TenancyContext/TransformerInjectable providers with TenancyModule import by @abouolia in #1113
- fix(auth): add ownership check to API key revocation to prevent IDOR (GHSA-xc3g-x39m-684g) by @abouolia in #1114
- fix(import): enforce file type validation to prevent unrestricted upload (GHSA-4c3x-fp46-xp4r) by @abouolia in #1115
- fix(auth): replace weak uniqid reset token with crypto.randomBytes and fix broken expiry check (GHSA-qx24-x69m-97wr) by @abouolia in #1116
- refactor(webapp): simplify financial statements export progress toast by @abouolia in #1119
- feat(payment-services): add OpenAPI DTOs and derive SDK types from schema by @abouolia in #1122
- refactor(webapp): add proper TypeScript types to infinite-query hooks by @abouolia in #1123
- fix(webapp): dynamically load moment.js locales by @abouolia in #1124
- refactor(server): convert DTO properties to camelCase and add Vendor response DTOs by @abouolia in #1125
- refactor(server): add OpenAPI schema for vendor/import endpoints and derive SDK types by @abouolia in #1126
- fix(server): unify FinancialStatements number format DTOs by @abouolia in #1127
- fix(server): add OpenAPI schema for contacts auto-complete endpoint by @abouolia in #1128
- chore: format all packages by @abouolia in #1129
- fix(server): document numberFormat query param via @apiquery by @abouolia in #1130
- refactor: FS query type-safety and response DTO ids by @abouolia in #1131
- fix(webapp): extract flattenInfinityPages utility and harden Account select types by @abouolia in #1132
- fix(server): only pass SMTP auth when credentials are configured by @DogInfantry in #1135
- refactor(webapp): tighten query types across banking, cashflow and items by @abouolia in #1136
New Contributors
- @Y8C68 made their first contribution in #1063
- @rebekah-create made their first contribution in #1090
- @c-premus made their first contribution in #1089
- @DogInfantry made their first contribution in #1135
Full Changelog: v0.25.20...v0.25.21