| ⇢ | A | CreateShortUrlActionTest added | |
| ⇢ | A | InputFactoryTrait added | |
| ⇢ | A | SluggerFilter added | |
| A | ↛ | InputFactoryTrait removed | 
| ⇢ | C | UrlShortener::findExistingShortUrlIfExists() added | |
| ⇢ | A | UrlShortenerTest::provideExsitingShortUrls() added | |
| ⇢ | A | CreateShortUrlActionTest::provideMatchingBodies() added | |
| ⇢ | A | InputFactoryTrait::createBooleanInput() added | |
| ⇢ | A | CreateShortUrlActionTest::createsNewShortUrlWhenOn... added | |
| ⇢ | A | SluggerFilter::__construct() added | |
| ⇢ | A | CreateShortUrlActionTest::createsNewShortUrlWithVi... added | |
| ⇢ | A | CreateShortUrlActionTest::returnsErrorWhenRequesti... added | |
| ⇢ | A | CreateShortUrlActionTest::createsNewShortUrlWithCu... added | |
| ⇢ | A | CreateShortUrlActionTest::provideMaxVisits() added | |
| ⋮ | view more | ||
| B | ↗ | A | AbstractCreateShortUrlAction::handle() improved | 
| B | ↗ | A | GenerateShortUrlCommand::execute() improved | 
| A | ↘ | B | UrlShortener::urlToShortCode() got worse | 
| A | ↛ | UrlShortenerTest::whenCustomSlugIsProvidedItIsUsed... removed | |
| A | ↛ | InputFactoryTrait::createInput() removed | |
| A | ↛ | UrlShortener::processCustomSlug() removed | |