# Changelog All notable changes to this project are documented in this file. The format follows [Keep a Changelog](https://keepachangelog.com/) and the plugin adheres to [Semantic Versioning](https://semver.org/). ## [1.0.0] – 2026-09-22 ### Added - "Sign in with Microsoft" button on `wp-login.php` (OpenID Connect authorization code flow with PKCE). - Matching of existing WordPress users by e-mail address (optional UPN fallback), no user provisioning. - Settings screen (Settings → M365 Login) with connection, button and security tabs, live button preview, colour presets, media-library icon picker, redirect-URI copy button and tenant connectivity test. - ID token verification against Microsoft's JWKS (RS256, issuer, audience, tenant, expiry, nonce). - Encrypted client secret storage (AES-256-GCM). - Account binding to the Microsoft object ID, e-mail domain allow-list. - Entra group restriction with a Graph-powered group picker; membership verified via the `groups` claim or Microsoft Graph `checkMemberGroups`. - Button-only mode that hides the password form and blocks password sign-in on `wp-login.php`, with a secret, rate-limited fallback link and a `wp-config.php` emergency constant. - Custom login page support: automatic button in `wp_login_form()` forms, `m365_login_button()` / `m365_login_messages()` template functions, custom login URL for error messages, fallback link and logout redirect. - `[m365_login_button]` shortcode (with `divider` and `messages` attributes) and developer hooks. - German translation.