{"id":"695831b151eccfbd2474841d","title":"2025 11 26 Issue 90","path":"how-to/committee/release-notes/2025-11-26-issue-90","contentMarkdown":"# 26-Nov-2025 — Deployment and Member-admin: 2 fixes [#90](https://github.com/nbarrett/ngx-ramblers/issues/90)\n\n## [Commit f837829](https://github.com/nbarrett/ngx-ramblers/commit/f837829e60fc3d713a9d96bb36ef4c965cad8881)\n\n_____\n\n## Bug Fixes\n\n### **deployment**: Further refinements to improve fly.io deployment reliability [ref: #90](https://github.com/nbarrett/ngx-ramblers/issues/90)\n\n- increase timeouts to handle cold start delays\n- Increase MongoDB connection timeout from 5s to 30s to handle replica set discovery during Fly.io cold starts\n- Add 600s (10 minute) wait-timeout to flyctl deploy to prevent premature deployment failures\n- Addresses issue where deployments succeeded but GitHub Actions timed out after 5 minutes\n- run migrations asynchronously after server starts\n- Move server.listen() before migration execution to ensure health checks pass immediately during fly.io deployments.\n- Migrations now run in background with proper error handling, allowing the server to respond to health checks within the 60s grace period while migrations complete.\n\n### **member-admin**: align lifecycle handling and brevo sync (#92)\n\n- Lifecycle handling: added MemberTerm enum (life/annual), ingested from bulk loads, schemas updated; life/payment-pending/newly-loaded members avoid expiry actions; Member Admin list shows “Lifetime” and modal expiry is disabled/readonly for life members.\n- UX persistence: Member Admin search/sort now persisted via kebab-cased query params (search, sort, sort-order) and local storage; lifetime display and date-picker null handling improved.\n- Deletion audit: manual member delete now records a deleted-member document (aligning with bulk delete).\n- Bulk load/back-end: member bulk-load date map aggregation typed and tested; member status/term captured from Ramblers feed; date map endpoint typed.\n- Brevo integration: always log errors; surface contact creation failures; fallback to batch update on duplicate ext_id; contact matching honors extId; checkbox label fixed.","contentHtml":"<h1>26-Nov-2025 — Deployment and Member-admin: 2 fixes <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/90\">#90</a></h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/commit/f837829e60fc3d713a9d96bb36ef4c965cad8881\">Commit f837829</a></h2>\n<hr>\n<h2>Bug Fixes</h2>\n<h3><strong>deployment</strong>: Further refinements to improve fly.io deployment reliability <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/90\">ref: #90</a></h3>\n<ul>\n<li>increase timeouts to handle cold start delays</li>\n<li>Increase MongoDB connection timeout from 5s to 30s to handle replica set discovery during Fly.io cold starts</li>\n<li>Add 600s (10 minute) wait-timeout to flyctl deploy to prevent premature deployment failures</li>\n<li>Addresses issue where deployments succeeded but GitHub Actions timed out after 5 minutes</li>\n<li>run migrations asynchronously after server starts</li>\n<li>Move server.listen() before migration execution to ensure health checks pass immediately during fly.io deployments.</li>\n<li>Migrations now run in background with proper error handling, allowing the server to respond to health checks within the 60s grace period while migrations complete.</li>\n</ul>\n<h3><strong>member-admin</strong>: align lifecycle handling and brevo sync (#92)</h3>\n<ul>\n<li>Lifecycle handling: added MemberTerm enum (life/annual), ingested from bulk loads, schemas updated; life/payment-pending/newly-loaded members avoid expiry actions; Member Admin list shows “Lifetime” and modal expiry is disabled/readonly for life members.</li>\n<li>UX persistence: Member Admin search/sort now persisted via kebab-cased query params (search, sort, sort-order) and local storage; lifetime display and date-picker null handling improved.</li>\n<li>Deletion audit: manual member delete now records a deleted-member document (aligning with bulk delete).</li>\n<li>Bulk load/back-end: member bulk-load date map aggregation typed and tested; member status/term captured from Ramblers feed; date map endpoint typed.</li>\n<li>Brevo integration: always log errors; surface contact creation failures; fallback to batch update on duplicate ext_id; contact matching honors extId; checkbox label fixed.</li>\n</ul>\n"}