| ⇢ | A | Totp added | |
| ⇢ | A | YubiKey added | |
| ⇢ | A | TotpTest added | |
| A | ↛ | TwoFactorTest removed | |
| A | ↛ | TwoFactor removed |
| ⇢ | B | ConnectionsModule::verifyTwoFactor() added | |
| ⇢ | B | Totp::verify() added | |
| ⇢ | B | YubiKey::verify() added | |
| ⇢ | A | Storage::setYubiKeyId() added | |
| ⇢ | A | Storage::hasYubiKeyId() added | |
| ⇢ | A | Storage::getYubiKeyId() added | |
| ⇢ | A | Storage::deleteYubiKeyId() added | |
| ⇢ | A | TotpTest::setUp() added | |
| ⇢ | A | TotpTest::testTooManyReplays() added | |
| ⇢ | A | Totp::__construct() added | |
| B | ↘ | D | UsersModule::init() got worse |
| B | ↛ | TwoFactor::verifyTotp() removed | |
| A | ↛ | ConnectionsModule::verifyOtp() removed | |
| A | ↛ | TwoFactorTest::setUp() removed | |
| A | ↛ | TwoFactorTest::testTooManyReplays() removed | |
| A | ↛ | TwoFactor::__construct() removed |