## ๐Ÿ“ Description **Linked Issue:** Fixes # > **Required.** Every PR must reference an approved issue. If no issue exists, [open one](https://github.com/booklore-app/booklore/issues/new) and wait for maintainer approval before submitting a PR. Unsolicited PRs without a linked issue will be closed. ## ๐Ÿท๏ธ Type of Change - [ ] Bug fix - [ ] New feature - [ ] Enhancement to existing feature - [ ] Refactor (no behavior change) - [ ] Breaking change (existing functionality affected) - [ ] Documentation update ## ๐Ÿ”ง Changes - ## ๐Ÿงช Testing (MANDATORY) > **PRs without this section filled out will be closed.** "Tests pass" or "Tested locally" is not sufficient. You must provide specifics. **Manual testing steps you performed:** 1. 2. 3. **Regression testing:** - **Edge cases covered:** - **Test output:**
Backend test output (./gradlew test) ``` PASTE OUTPUT HERE ```
Frontend test output (ng test) ``` PASTE OUTPUT HERE ```
## ๐Ÿ“ธ Screen Recording / Screenshots (MANDATORY) > Every PR must include a **screen recording or screenshots** showing the change working end-to-end in a running local instance (both backend and frontend). This means you must have actually built, run, and tested the code yourself. PRs without visual proof will be closed without review. --- ## โœ… Pre-Submission Checklist > **All boxes must be checked before requesting review.** Incomplete PRs will be closed without review. No exceptions. - [ ] This PR is linked to an approved issue - [ ] Code follows project [backend and frontend conventions](../CONTRIBUTING.md#backend-conventions) - [ ] Branch is up to date with `develop` (merge conflicts resolved) - [ ] I ran the full stack locally (backend + frontend + database) and verified the change works - [ ] Automated tests added or updated to cover changes (backend **and** frontend) - [ ] All tests pass locally and output is pasted above - [ ] Screen recording or screenshots are attached above proving the change works - [ ] PR is a single focused change (one bug fix OR one feature, not multiple unrelated changes) - [ ] PR is reasonably scoped (PRs over 1000+ changed lines will be closed, split into smaller PRs) - [ ] No unsolicited refactors, cleanups, or "improvements" are bundled in - [ ] 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)_ ### ๐Ÿค– 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.** You are fully responsible for every line you submit. "The AI wrote it" is not an excuse, and AI-generated PRs that clearly haven't been reviewed are the #1 reason PRs get closed. - [ ] I have read and understand every line of this PR and can explain any part of it during review - [ ] I personally ran the code and verified it works (not just trusted the AI's output) - [ ] 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 left behind by AI - [ ] I did not submit refactors, style changes, or "improvements" the AI suggested beyond the scope of the issue --- ## ๐Ÿ’ฌ Additional Context _(optional)_