Highlights
RFC 0015 — Signed Attachment Delivery Route, closing v1's one real capability gap: private attachments on the local disk and on R2 without presign credentials.
- @guren/core 1.11.0 —
configureAttachments()gainsdeliveryand a wideneddisksmap (serve: 'auto' | 'redirect' | 'proxy' | 'direct'). Withdeliveryconfigured, private-disk URLs become path-relative signed route URLs (purpose-scoped HMAC keyring,expiresIn/dispositionoverrides).registerAttachmentRoutes(router)mounts the route: uniform-404 signature verification, serve-time variant resolution, 302 redirects to per-request presigned URLs oncapabilities.presignedGetdisks, and hardened proxy responses (inline allowlist,nosniff,CSP: sandbox,Referrer-Policy: no-referrer, resolved-object ETag/304, HEAD short-circuit) everywhere else. Also.guren/attachments.gen.tscodegen (AttachmentsMap). - @guren/server 2.13.0 —
signUrl/verifySignedUrlaccept app-relative input, canonicalize by code unit, and reject non-integerexpires;StorageDrivergains optionalgetStream(Local/S3 implemented),capabilities(declared, never probed), andtemporaryUrlresponse overrides (S3 presignedResponseContentDisposition/ResponseContentType). - @guren/plugin-cloudflare 0.5.0 —
R2Driver.getStreamover the binding's rangedget,capabilities.presignedGetderived frompresignconfig, per-credential/day SigV4 signing-key cache. Private attachments now work on the binding alone (the route proxiesget().bodythrough the Worker); note R2's S3 API ignores response header overrides —serve: 'proxy'forcesContent-Disposition. - @guren/cli 2.12.0 —
guren checkgains the delivery wiring rules (deliveryconfigured butregisterAttachmentRoutes()unmounted; route-name collisions;serve: 'redirect'on a driver that cannot presign), plus attachments codegen andagent:sync --prunerule handling. - @guren/testing 1.7.0 —
view()mocking support. - create-guren-app 1.10.1 — template dependency ranges follow the new versions.
Docs: the attachments guide's "URLs and visibility" section now documents the delivery route end to end (en/ja); the Cloudflare guide covers binding-only private attachments.
See each package's CHANGELOG for details. Refs: RFC 0015 (rfcs/0015-signed-attachment-delivery.md).