diff --git a/CLAUDE.md b/CLAUDE.md index 3bef874..7793a93 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -125,6 +125,19 @@ The authenticated email comes from `securityIdentity.getPrincipal().getName()` a This ensures code review, clear history, and traceability. +### PR Size Limits + +To keep PRs focused and reviewable, enforce these limits **per PR**: +- **Maximum 5 files changed** +- **Maximum 30 lines changed** (added, modified, or deleted combined) + +**If exceeding these limits:** Split into multiple PRs. **Prefer splitting by layer:** +- One PR for backend changes (`backend/`) +- One PR for frontend changes (`frontend/`) +- One PR for config/infra (`docker-compose.yml`, `.env`, etc.) + +This keeps code review focused, reduces merge conflicts, and makes history easier to bisect. + ## Skills Skills do projeto em `.claude/skills/`: diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index a656413..c25d7e3 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -21,16 +21,17 @@ export async function apiFetch(path: string, options: RequestOptions = {}) { } } + const isFormData = body instanceof FormData + const contentTypeHeader = isFormData ? {} : { 'Content-Type': 'application/json' } + const response = await fetch(buildUrl(path), { ...rest, headers: { - 'Content-Type': 'application/json', + ...contentTypeHeader, ...authHeader, ...headers, }, - body: body !== undefined && body !== null && !(body instanceof FormData) - ? JSON.stringify(body) - : body, + body: isFormData ? body : (body !== undefined && body !== null ? JSON.stringify(body) : undefined), }) const text = await response.text()