Fixed
- Family members who are both a shared-expense guest and hold a family role without Budget access no longer get stuck in an infinite redirect loop between the dashboard and the Budget module (which previously crashed the tab with a "Maximum call stack size exceeded" error). The guest→Budget redirect now defers to the permission check, so a user without Budget access lands on an accessible page instead. (#480)