this repo has no description
1# Changelog 2 3All notable changes to this project will be documented in this file. 4 5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). 6 7## [Unreleased] 8 9## [0.4.0] - 2026-01-08 10 11### Added 12 13- **Foreign DID proxying** via `atproto-proxy` header 14 - `parseAtprotoProxyHeader()` parses `did:web:api.bsky.app#bsky_appview` format 15 - `getKnownServiceUrl()` maps known service DIDs to URLs 16 - `proxyToService()` generic proxy utility with header forwarding 17 - Repo endpoints (getRecord, listRecords, describeRepo) support explicit proxying 18 - Returns appropriate errors for malformed headers or unknown services 19- Unit tests for proxy utilities 20- E2E tests for foreign DID proxying behavior 21 22### Changed 23 24- Refactored `handleAppViewProxy` to use shared `proxyToService` utility 25 26## [0.3.0] - 2026-01-08 27 28### Added 29 30- **Granular OAuth scope enforcement** on repo and blob endpoints 31 - `parseRepoScope()` parses `repo:collection?action=create&action=update` format 32 - `parseBlobScope()` parses `blob:image/*` format with MIME wildcards 33 - `ScopePermissions` class for checking repo/blob permissions 34 - Enforced on createRecord, putRecord, deleteRecord, applyWrites, uploadBlob 35- **Consent page permissions table** displaying scopes in human-readable format 36 - Identity-only: "wants to uniquely identify you" message 37 - Granular scopes: Table with Collection + Create/Update/Delete columns 38 - Full access: Warning banner for `transition:generic` 39- `parseScopesForDisplay()` helper for consent page rendering 40- E2E tests for scope enforcement and consent page display 41 42## [0.2.0] - 2026-01-07 43 44### Added 45 46- **OAuth 2.0 authorization server** with full AT Protocol support 47 - Discovery endpoints (AS metadata, protected resource, JWKS) 48 - Pushed Authorization Requests (PAR) 49 - Authorization endpoint with dark-themed consent UI 50 - Token endpoint (authorization_code + refresh_token grants) 51 - Token revocation (RFC 7009) 52 - DPoP proof validation and token binding 53 - PKCE with S256 code challenge 54 - Client metadata fetching and validation 55 - Loopback client support for development 56- DPoP JTI tracking to prevent replay attacks 57- Comprehensive OAuth e2e tests 58 59### Changed 60 61- **BREAKING:** Normalized SQL schema to snake_case convention 62 - Tables: `blob``blobs`, `record_blob``record_blobs` 63 - Columns: `mimeType``mime_type`, `createdAt``created_at`, `blobCid``blob_cid`, `recordUri``record_uri` 64 - Existing Durable Objects require storage reset 65- Consolidated error responses to use `errorResponse` helper 66- Moved OAuth types to TYPES & CONSTANTS section 67 68## [0.1.0] - 2025-01-07 69 70Initial experimental release. 71 72### Added 73 74- **Repo operations:** createRecord, getRecord, putRecord, deleteRecord, applyWrites, listRecords 75- **Sync endpoints:** getRepo (CAR export), subscribeRepos (WebSocket firehose), getLatestCommit 76- **Authentication:** createSession, getSession, refreshSession with JWT tokens 77- **Blob storage:** uploadBlob, getBlob, listBlobs with R2 backend 78 - MIME type sniffing (JPEG, PNG, GIF, WebP, MP4, AVIF, HEIC) 79 - Automatic orphaned blob cleanup via DO alarms 80 - Blob-record association tracking 81- **Identity:** Handle resolution, PLC directory registration 82- **Federation:** Relay notification (requestCrawl), AppView proxy for app.bsky.* endpoints 83- **Infrastructure:** 84 - Merkle Search Tree (MST) for repo structure 85 - DAG-CBOR encoding with CID generation 86 - P-256 ECDSA signing via Web Crypto 87 - TypeScript checking via JSDoc annotations 88 - Setup script for key generation and PLC registration