Patch release bringing admin user experience improvements, clear distinction between SMTP and MagicLink, and important bug fixes.
✨ What's New
🎨 Admin Interface Improvements
Expected Signers Management:
- ✅ Delete button now hidden for signers who have already signed
- ✅ Prevention of invalid operations (deletion impossible after signature)
- ✅ Clearer and more intuitive interface
Email Reminders Card:
- ✅ Conditional display based on SMTP availability
- ✅ Informative alert when SMTP disabled but history exists
- ✅ Send button hidden when email service disabled
- ✅ Complete translations (French, English, German, Spanish, Italian)
🔧 SMTP / MagicLink Distinction
Important clarification: SMTP and MagicLink are now two clearly distinct features:
- SMTP = Email reminder service (auto-detected from
ACKIFY_MAIL_HOST) - MagicLink = Passwordless email authentication (requires explicit activation)
New variables:
# MagicLink now requires explicit activation
ACKIFY_AUTH_MAGICLINK_ENABLED=true # + ACKIFY_MAIL_HOST configured
# OAuth can be forced on/off (optional)
ACKIFY_AUTH_OAUTH_ENABLED=trueFrontend variable:
- New
window.ACKIFY_SMTP_ENABLEDvariable injected in frontend - Enables conditional display of email features on client side
🐛 Bug Fixes
Fix #5 - Crash when clicking "Manage" on a document:
- ✅ Fixed nil pointer panic in
ReminderAsyncService.GetReminderStats - ✅
ReminderAsyncandMagicLinkservices always initialized - ✅ Detailed error logs for easier debugging
Fix - Expected Signers Deletion:
- ✅ Fixed URL decoding of emails (
@character encoded as%40) - ✅
DELETE /api/v1/admin/documents/{docId}/signers/{email}works correctly - ✅ Improved error logging for diagnostics
🔧 Technical Improvements
Backend:
- Added
SMTPEnabledflag inAppConfigto distinguish SMTP from MagicLink - URL decoding of emails in DELETE signer endpoint
- Detailed error logging for expected signer operations
- Unit tests updated to reflect new MagicLink logic
Frontend:
window.ACKIFY_SMTP_ENABLEDvariable for feature detection- Hide delete button for signers who have signed
- Conditional display of email reminders card
- Informative alert for disabled email service
Configuration:
- MagicLink now requires
ACKIFY_AUTH_MAGICLINK_ENABLED=true - SMTP auto-detected from
ACKIFY_MAIL_HOST(independent of MagicLink) - Enhanced validation: at least one authentication method required
📚 Documentation
- ✅ "Authentication Methods" section added to documentation
- ✅ Clarification of SMTP vs MagicLink distinction
- ✅ Documentation of new
ACKIFY_AUTH_*_ENABLEDvariables - ✅ Updated configuration examples (English + French)
🐛 Detailed Fixes
Issue #5 - Panic on GetReminderStats
Symptom: Crash with "panic: runtime error: invalid memory address" when clicking "Manage" on a document.
Cause: ReminderAsyncService was not always initialized.
Solution:
- Services always initialized (no nil checks)
- Detailed error logging added
- Unit tests updated
Signer Deletion
Symptom: "expected signer not found" error during deletion.
Cause: Email in URL (al@bundy.com) was encoded (al%40bundy.com) but not decoded on server side.
Solution:
- Added
url.QueryUnescape()to decode email - Imported
net/urlpackage - Improved error logging
🔗 Useful Links
- Full Changelog: https://github.com/btouchard/ackify-ce/blob/main/CHANGELOG.md
- Documentation: https://github.com/btouchard/ackify-ce/blob/main/README.md
- Diff: v1.2.1...v1.2.2
📝 Migration from v1.2.1
Version 1.2.2 is 100% backward compatible with v1.2.1.
⚠️ Important Change: MagicLink
Before (v1.2.1): MagicLink automatically enabled if ACKIFY_MAIL_HOST configured.
Now (v1.2.2): MagicLink requires explicit activation:
# To enable MagicLink
ACKIFY_MAIL_HOST="smtp.example.com" # SMTP configured
ACKIFY_AUTH_MAGICLINK_ENABLED=true # Explicit activationIf you use MagicLink, add this line to your .env:
ACKIFY_AUTH_MAGICLINK_ENABLED=trueIf you only use email reminders (not MagicLink), no change required.
Docker Rebuild
docker compose pull
docker compose up -dNo new database migrations are required for this version.
Full Changelog: v1.2.1...v1.2.2