# 23rd August — 12th September 2025 — Angular 20, Bootstrap 5, Luxon & UI Polish
## [Build #277](https://github.com/nbarrett/ngx-ramblers/actions/runs/17661319694/job/50195181948)
____
_Please feel free to skip these release notes if you’re not into the under‑the‑hood bits — this changeset rolls up several migrations and a good amount of tidy‑up to make things behave just so._  🚀
____
  ### 2025-09-12 — Date & UI polish

  - feat(ui): improve Bootstrap 5 migration, Luxon Date migration regressions and committee role selector ([00ae842](https://github.com/nbarrett/ngx-ramblers/commit/00ae842fad5ca6d6f8c2790b9bfb80c06038f3bc))
      - Date picker: introduce Moment‑style BsDatepickerFormat for ngx‑bootstrap; keep Luxon tokens in UIDateFormat
      - Wire app-date-picker to BsDatepickerFormat.DATE_INPUT; avoid early template‑ref usage
      - Fix invalid template bindings; align site‑edit checkboxes (Quick Search, Pagination, Alert Indicator, Auto Title, Add New Event Button)
      - Consolidate date formats; ensure DateTime.toFormat() used across pipes
  - docs(dev): add semantic commit conventions to AGENTS.md ([67155e6](https://github.com/nbarrett/ngx-ramblers/commit/67155e645100b62493765be6d7034f7cc683feab))

  ### 2025-09-10 — Luxon migration, lodash‑es → es‑toolkit, and BS5 tidy‑ups

  - Convert migrate Moment.js → Luxon across app & server (#15) ([94df053](https://github.com/nbarrett/ngx-ramblers/commit/94df053ecb0fe30ebc312d442480a509c4e0bc70))
      - Replace Moment with Luxon; unify Europe/London zone; DST‑safe calculations
      - Centralize ISO formatting (suppress ms); update components/pipes/tests; drop custom‑webpack
  - Refactor: migrate lodash‑es usage to es‑toolkit (#47) ([a75630f](https://github.com/nbarrett/ngx-ramblers/commit/a75630f8658ef1f3cb87c3dbe341bef21b2e0e11))
  - Fix date handling when required value(s) missing; update former jumbotron to BS5 classes ([3d1827a](https://github.com/nbarrett/ngx-ramblers/commit/3d1827ae96374afae24c7ff59a03a547c2860f4d))

  ### 2025-09-09 — Bootstrap 5 UI fixes

  - Bootstrap 5 migration UI fixes and dynamic content editor button improvements ([aa39211](https://github.com/nbarrett/ngx-ramblers/commit/aa392115a10cf4203aad8689ae7be8485c1547ba))

  ### 2025-09-07 — Bootstrap 5 migration and CI/test gating

  - Bootstrap 4 → 5 migration (pin bootstrap@5.3.8, @popperjs/core@2.11.8); many template/class updates ([b5603f2](https://github.com/nbarrett/ngx-ramblers/commit/b5603f25cbe5e9ad14d58babff73de57cf0204a9))
  - Frontend + server polish, test gating, and doc consolidation ([6f3962a](https://github.com/nbarrett/ngx-ramblers/commit/6f3962a272fdb8e5439bdf9ef17bed14952bb373))
      - Pre‑push: FE + server tests on pushes to main/pre‑main
      - Actions: split test/deploy; deploy gated on tests; S3 client moved to AWS SDK v3

  ### 2025-09-06 — Dependency update

  - Upgrade ng2-file-upload to 9.0.0; remove legacy peer‑deps flag ([74c9e92](https://github.com/nbarrett/ngx-ramblers/commit/74c9e92a9357858f947d7d263e4bb0f802cd0a9d))

  ### 2025-09-05 — Angular 20 + Node 22 upgrades

  - Upgrade Angular to 20.2.4; CLI to 20.2.2; TypeScript 5.9.2; Node 22.19.0; npm 10.9.3 ([4b5a7b4](https://github.com/nbarrett/ngx-ramblers/commit/4b5a7b466480c0a73359436616bccdb6985b74b6))

  ### 2025-09-04 — Album editor fixes, pagination polish, and local storage standardisation

  - Fixed album image upload on stale page; pagination alignment; correct page counts; standardise localStorage keys ([e7eb4c0](https://github.com/nbarrett/ngx-ramblers/commit/e7eb4c05d0ba381ec36aabf31e5f65cc2f284cd8))
  - Gallery view now responds to selection; only the active album row updates on select ([080f0a3](https://github.com/nbarrett/ngx-ramblers/commit/080f0a320a2c6823db7278a0f40184291cfd5583))
  - Added CLAUDE.md ([c453c9b](https://github.com/nbarrett/ngx-ramblers/commit/c453c9bc95fda30a10b6beba6f134e04b24a62d5))

  ### 2025-08-23 — Social event fix

  - Fix social event contact details error ([91588c6](https://github.com/nbarrett/ngx-ramblers/commit/91588c65a92c1ad636860414b6f526d6e7026ef2))