Summary
useCursorPagination.encodeCursor calls btoa(id) without try/catch; btoa throws InvalidCharacterError for characters outside Latin-1.
Why this matters
Once catalogue ids come from the backend, a single non-ASCII id crashes MarketplacePage's render.
Scope
Encode via TextEncoder + base64url (and decode symmetrically), keeping decodeCursor tolerant of invalid input.
Relevant code in CalloraOrg/Callora-Frontend:
src/hooks/useCursorPagination.ts
Priority
Low
Acceptance criteria
- Ids with non-Latin-1 characters encode without throwing
- Round-trip decode returns the original id
- Cursors are URL-safe
- Invalid cursors still fall back to page one
Validation
npm test -- --run src/hooks/useCursorPagination.test.ts
Non-goals
- Typo-only, formatting-only, or cosmetic changes.
- Unrelated refactors, dependency upgrades, or broad rewrites.
- Removing safeguards or weakening validation to make tests pass.
Contributor application
Before coding, describe the affected modules, proposed state/invariant changes, test strategy, compatibility considerations, and an estimate. Wait for assignment before starting implementation.
PR requirements
Use a feature branch and include Closes #<issue-number>. Address every criterion, map criteria to code and tests, explain security and failure-mode handling, and ensure CI passes.
Quality review
A maintainer will assess correctness, completeness, test depth, compatibility, observability, and adverse-case handling. A substantive implementation is required; merge or CI status alone does not guarantee reward eligibility.
Generated by Claude Code
Summary
useCursorPagination.encodeCursor calls btoa(id) without try/catch; btoa throws InvalidCharacterError for characters outside Latin-1.
Why this matters
Once catalogue ids come from the backend, a single non-ASCII id crashes MarketplacePage's render.
Scope
Encode via TextEncoder + base64url (and decode symmetrically), keeping decodeCursor tolerant of invalid input.
Relevant code in CalloraOrg/Callora-Frontend:
src/hooks/useCursorPagination.tsPriority
Low
Acceptance criteria
Validation
npm test -- --run src/hooks/useCursorPagination.test.ts
Non-goals
Contributor application
Before coding, describe the affected modules, proposed state/invariant changes, test strategy, compatibility considerations, and an estimate. Wait for assignment before starting implementation.
PR requirements
Use a feature branch and include
Closes #<issue-number>. Address every criterion, map criteria to code and tests, explain security and failure-mode handling, and ensure CI passes.Quality review
A maintainer will assess correctness, completeness, test depth, compatibility, observability, and adverse-case handling. A substantive implementation is required; merge or CI status alone does not guarantee reward eligibility.
Generated by Claude Code