# 02-Mar-2026 — Environment-setup, Album and 1 more areas: 1 feature and 3 fixes [#146](https://github.com/nbarrett/ngx-ramblers/issues/146)

## [build 508](https://github.com/nbarrett/ngx-ramblers/actions/runs/22570391360) — [commit 590a441](https://github.com/nbarrett/ngx-ramblers/commit/590a441d1e66d4b55715059379df5d976f74825b)

_____

- Fix Fly.io shared IPv4 allocation using sharedIpAddress fallback for known GraphQL API bug
- Wire notification configs to built-in processes (forgot-password, walks, expenses, contact-us)
- Assign admin user to committee roles (membership, support) for email sender resolution
- Register admin as Brevo sender during environment creation
- Add admin password reset button to Modify Environment flow
- Allow password reset route to bypass maintenance mode guard
- Add seed endpoints for sample pages, notification configs, and Brevo templates
- Extract shared helpers: toGroupShortName, cleanIncorrectPageContent, runMigrations, registerBrevoSender
- Make notification config seeding idempotent with upsert pattern
- Fix arrow-parens lint violations across all server TypeScript files

### **environment-setup**: use database for secrets and Brevo config, fix GitHub status comparison ([#146](https://github.com/nbarrett/ngx-ramblers/issues/146))

- Switch loadEnvironmentContext from file-based to database-only secrets
- Read Brevo API key via configuredBrevo() instead of secrets.BREVO_API_KEY
- Destroy route uses database mongo config instead of file-based secrets
- GitHub status endpoint no longer fakes CONFIGS_JSON from database, honestly
reports unknown state until a push establishes the comparison baseline
- Use sortBy from arrays.ts for reconciliation sorting
- Remove unused loadSecretsForEnvironment import

### **album**: real-time border radius updates, toolbar full-width layout, and settings row spacing

- Change gridViewOptions to a getter in AlbumComponent to ensure edit form mutations flow through to the preview grid in real time
- Add .album-toolbar CSS rules to spread badge-buttons and badge-steppers across full width
- Add flex-fill to settings row form-groups so fields fill available width
- Create missing album.sass referenced by component

### **admin**: stale-while-revalidate area cache, skip migration check on password reset, and centralise admin paths ([#146](https://github.com/nbarrett/ngx-ramblers/issues/146))

Area cache now always serves cached data immediately and refreshes
in the background when expired, preventing visible loading delays.
Replace banned Date.now() with dateTimeNowAsValue().
Skip migration status check when navigating to set-password URLs
so password resets work on newly provisioned environments with
pending migrations.
Centralise admin/set-password and admin/maintenance path strings
as shared constants in system.model.ts and update all TypeScript
references across frontend guards, services, and backend routes.