Highlights
- Role rework, rewriting the entire permission system
- MCP server added allowing users to use Receipt Wrangler through LLMs
- HTML Email Body to PDF allowing users to read email bodies
- Configurable PDF Rasterization DPI allowing the system to render PDFs at much higher DPIs for improved readability and OCR performance
What's Changed
- Upgrade Angular application to version 20 by @Noah231515 in #472
- Add pie chart by @Noah231515 in #488
- chore/udpdate to angular 21 by @Noah231515 in #503
- Improve iOS privacy permission descriptions for clarity by @Noah231515 in #505
- Claude/fix app review issues by @Noah231515 in #506
- Fix builds by @Noah231515 in #507
- fix pipeline? by @Noah231515 in #508
- fix pipeline? by @Noah231515 in #509
- validate tests by @Noah231515 in #510
- fix bug and test by @Noah231515 in #511
- fix slow table by @Noah231515 in #512
- Bug/fix dashboard bugs by @Noah231515 in #513
- Add mobile profile route by @Noah231515 in #514
- Add configurable JSON response format enforcement for LLM providers by @Noah231515 in #516
- Fix unexpected desktop logouts from token refresh races by @Noah231515 in #517
- Fix receipt form change detection issues after Angular 21 upgrade by @Noah231515 in #520
- Add workflow guidance to CLAUDE.md files by @Noah231515 in #522
- Fix pie chart tooltip using hardcoded currency symbol by @Noah231515 in #523
- Fix unexpected mobile logouts caused by token refresh race conditions by @Noah231515 in #524
- Claude/add email body reading sb7r f by @Noah231515 in #525
- Fix notification badge not updating when notifications are cleared by @Noah231515 in #526
- Add opt-in toggle for email body text processing by @Noah231515 in #527
- Fix failing group settings tests by @Noah231515 in #528
- Fix NG0201 error on dashboard pie charts by adding missing CustomCurrencyPipe provider by @Noah231515 in #531
- Parallelize ARM64 and AMD64 Docker builds in CI and release workflows by @Noah231515 in #532
- Fix NG0951 error on preferences page by using non-required viewChild by @Noah231515 in #533
- Fix 403 error for non-admin users checking duplicate category/tag names by @Noah231515 in #534
- Fix failing api tests by @Noah231515 in #536
- Tech/cleanup by @Noah231515 in #537
- fix: add SetCompressionQuality(95) to ConvertHeicToJpg by @rwilson131 in #535
- fix: user preferences page crash and shortcut editing by @Noah231515 in #538
- Fix create-docker-manifest job being skipped by @Noah231515 in #540
- fix tags field editable in receipt form view mode by @Noah231515 in #541
- fix vision images not sent for OPEN_AI_CUSTOM_NEW ai type by @Noah231515 in #542
- Support negative amounts on receipts, items, and shares by @Noah231515 in #543
- fix share-list phantom blank share + create-docker-manifest skip by @Noah231515 in #544
- fix duplicate-receipt navigate button not updating page (issue #442) by @Noah231515 in #545
- Render HTML email bodies to PDF via chromedp and attach to receipts by @Noah231515 in #546
- Add backend unit tests for auth + receipt/AI pipeline; fix 3 latent bugs by @Noah231515 in #547
- Add persistent volumes to dev docker-compose configuration by @Noah231515 in #548
- fix hardcoded /app/api fixture paths breaking CI tests by @Noah231515 in #549
- Add Playwright e2e suite and CI workflow by @Noah231515 in #552
- Fix readme typos by @andrew-yoo in #555
- Add role and permission tables to schema by @Noah231515 in #557
- Add permission registry catalog by @Noah231515 in #558
- mobile-e2e: local Android + iOS runners + API user seeding by @Noah231515 in #559
- mobile-e2e CI: unblock iOS, route through run-e2e-ios.sh by @Noah231515 in #560
- mobile-e2e CI: unblock Android, route through run-e2e-android.sh by @Noah231515 in #561
- mobile-e2e: scaffold receipt status / comments / cost-split specs (skipped) by @Noah231515 in #563
- mobile-e2e: iOS first-spec retry + gallery mock real-file fix by @Noah231515 in #562
- Add Manage Roles list page and reusable breadcrumb by @Noah231515 in #564
- mobile-e2e: ship Flutter integration_test suite + Android/iOS CI (PR-triggered) by @Noah231515 in #566
- Add role creation (unified app/group role pool) by @Noah231515 in #565
- Add update-role endpoint and edit-role UI by @Noah231515 in #567
- Add delete-role endpoint and UI by @Noah231515 in #568
- Backend permission matcher + roles/permissions docs by @Noah231515 in #570
- Seed legacy system roles; remove dead OCR-export endpoint by @Noah231515 in #571
- Assign legacy-equivalent roles to existing users on startup by @Noah231515 in #575
- Strip trailing commas from AI response before JSON parse by @miditt in #574
- Enforce modern permissions on all API endpoints by @Noah231515 in #576
- Add required default app and group roles by @Noah231515 in #581
- Assign modern roles when creating users and group members by @Noah231515 in #582
- Gate desktop UI on modern permissions by @Noah231515 in #585
- Add e2e coverage for permission gating (viewer, API keys, system settings) by @Noah231515 in #586
- Add modern permission-based UI gating to the mobile app by @Noah231515 in #587
- Remove the legacy role system from the backend by @Noah231515 in #588
- Remove the legacy role system from the desktop frontend by @Noah231515 in #589
- Send appRoleId from the mobile e2e createUser fixture by @Noah231515 in #590
- Group-role-scoped category & tag visibility (lock-down) by @Noah231515 in #598
- Add OAuth 2.1-protected MCP server to the API by @prescottprue in #592
- Gate permission-restricted UI + receipt write enforcement (role-rework) by @Noah231515 in #600
- Gate mobile search/dashboards by permission + e2e negative coverage (mobile & desktop) by @Noah231515 in #604
- Add per-group-role paid-by receipt visibility filter by @Noah231515 in #605
- Mobile: per-group category/tag catalogs + comment gating (role-rework parity) by @Noah231515 in #606
- Survive a not-yet-ready database on startup; exit container when the API crashes by @rwilson131 in #584
- Rasterize PDFs at configurable DPI (default 300) instead of 72 by @ronschaeffer in #578
- Fix Angular unit tests for new pdfDpi system setting by @Noah231515 in #607
- Permission gating: test coverage, gating fixes, and the /groups over-gate fix by @Noah231515 in #608
- Merge main into feature/role-rework + sync pdfDpi swagger/clients by @Noah231515 in #609
- Resolve role ids by scope to prevent app/group id collisions by @Noah231515 in #610
- Resolve all desktop npm audit vulnerabilities by @Noah231515 in #611
- Role & permission rework: configurable app/group roles with granular permissions by @Noah231515 in #612
New Contributors
- @rwilson131 made their first contribution in #535
- @andrew-yoo made their first contribution in #555
- @miditt made their first contribution in #574
- @prescottprue made their first contribution in #592
- @ronschaeffer made their first contribution in #578
Full Changelog: v6.7.0...v7.0.0