feat(oauth): add granular scope enforcement and consent permissions table
Add granular OAuth scope enforcement:
- parseRepoScope() parses repo:collection?action=create&action=update format
- parseBlobScope() parses blob:image/* format with MIME wildcards
- ScopePermissions class for checking repo/blob permissions
- Enforced on createRecord, putRecord, deleteRecord, applyWrites, uploadBlob
Add consent page permissions table:
- Identity-only: "wants to uniquely identify you" message
- Granular scopes: Table with Collection + Create/Update/Delete columns
- Full access: Warning banner for transition:generic
- parseScopesForDisplay() helper for consent page rendering
Also includes:
- Comprehensive E2E tests for scope enforcement and consent display
- OAuth token helper extracted to test/helpers/oauth.js
- Updated scope-comparison.md documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>