## ๐Ÿ“ Description ## ๐Ÿท๏ธ Type of Change - [ ] Bug fix - [ ] New feature - [ ] Enhancement to existing feature - [ ] Refactor (no behavior change) - [ ] Breaking change (existing functionality affected) - [ ] Documentation update ## ๐Ÿ”ง Changes - ## ๐Ÿงช Testing ## ๐Ÿ“ธ Screenshots / Video (MANDATORY) > Due to an increase in untested, AI-generated PRs, we have made this section mandatory for all submissions. Please include screenshots or a screen recording that demonstrates your change working end-to-end (e.g., the bug fix in action, the new feature working, API responses, or test output for backend changes). **PRs that do not include this will be closed without review.** Thank you for helping us keep the project stable. --- ## โœ… Pre-Submission Checklist > **All boxes must be checked before requesting review.** Incomplete PRs will be closed without review. No exceptions. - [ ] Code follows project style guidelines and conventions - [ ] Branch is up to date with `develop` (merge conflicts resolved) - [ ] Automated tests added or updated to cover changes (backend **and** frontend) - [ ] All tests pass locally (`./gradlew test` for backend, `ng test` for frontend) - [ ] Changes manually verified in local dev environment (including related features) - [ ] Screenshots or video proving the change works are attached above **(MANDATORY)** - [ ] Flyway migration versioning is correct _(if schema was modified)_ - [ ] Documentation PR submitted to [booklore-docs](https://github.com/booklore-app/booklore-docs) _(if user-facing changes)_ - [ ] PR is reasonably scoped (PRs over 1000+ changed lines will be closed, split into smaller PRs) ### ๐Ÿค– AI-Assisted Contributions > **If any part of this PR was generated or assisted by AI tools (Copilot, Claude, ChatGPT, etc.), all items below are mandatory.** AI-generated code that hasn't been thoroughly reviewed is the leading cause of reverted PRs. You are responsible for every line you submit. "The AI wrote it" is not an excuse. - [ ] Every line has been read, understood, and can be explained by the author - [ ] PR is scoped to a single logical change, not a dump of everything the AI suggested - [ ] Tests validate actual behavior, not just coverage (AI-generated tests often assert nothing meaningful) - [ ] No dead code, placeholder comments, `TODO`s, or unused scaffolding --- ## ๐Ÿ’ฌ Additional Context _(optional)_