# ✨ ChurchCRM 6.7.0 — Pledges, Code Quality & Mobile Phones

> *Full pledge lifecycle in the Finance module, cleaner codebase, better phone handling.*

Released: January 2026

---

## 📊 Finance — Pledge Dashboard Fully Integrated

The Pledge Dashboard introduced in 6.6.0 is now fully integrated into the Finance experience:

- **Pledge Dashboard** appears in the Finance menu and the Finance dashboard — no more hunting for pledge reports
- **Payment tracking** shows each pledge alongside how much has been paid and how much remains
- **Fiscal year organization** via the new `FiscalYearUtils` — pledges are grouped and summarized correctly by your configured fiscal year
- Finance Query #32 migrated to the Finance MVC module for consistency

---

## 📱 Phone Numbers — Custom Fields & Self-Registration

Custom phone fields have been significantly improved:

- **"No format" mode** fully working — custom phone fields configured without a format mask now accept any input without interference
- **`data-phone-mask` attribute** used for explicit, reliable mask initialization — stored phone formats are correctly preserved when editing records
- **Self-registration form** updated: "work" phone type removed; masks applied from system configuration for consistent formatting

---

## 🏛️ Code Quality & Modernization

A significant amount of legacy code has been cleaned up in this release:

**Legacy function removal:**
- `ChopLastCharacter()` — removed (unused)
- `MySQLquote()` — removed (replaced by ORM)
- Custom boolean conversion functions replaced with native PHP `filter_var()`
- Custom `random_color()` simplified to use native PHP `bin2hex()` and `random_bytes()`

**Utilities reorganized:**
- `MICRFunctions` → `MICRUtils`
- `KeyManager` → `KeyManagerUtils`
- `PhpVersion` merged into `VersionUtils`
- `SQLUtils`, `FileSystemUtils`, `ArrayUtils` all moved to the `Utils` package

**HTML modernized:**
- All pages updated to HTML5 `DOCTYPE`
- Broken `Header-function.php` reference removed from `Header-Short.php`

---

## 📅 Dashboard — Birthday Fix

- **Birthday list** corrected — when a birthday has already passed this year, the dashboard now shows the *next* occurrence (next year) rather than the past date. Your birthday reminders are now always forward-looking.

---

## 🌍 Localization

- Locale build configuration centralized
- `messages.po` moved to `locale/terms/` for better organization
- Locale updated from POEditor

---

**Full Changelog**: https://github.com/ChurchCRM/CRM/compare/6.6.1...6.7.0
