memos/proto
boojack b3e67399b8 feat(attachment): upload files in resumable chunks
Add UploadAttachment, a unary RPC that accepts a file in bounded chunks
and streams it to a temp file instead of holding the whole blob in one
request body and in memory. A call carrying a spec starts an upload and
returns an opaque upload_id; later calls carry that id with
write_offset,
data, and finish_write, following the Cloud Storage WriteObject shape.
Retrying the last chunk after a lost response is idempotent, uploads are
bound to their owner, and they expire after 30 minutes of inactivity.

CreateAttachment and the chunked finalize now share one processing
pipeline for motion-photo detection, EXIF stripping, and storage. The
motion-photo detector works over an io.ReaderAt so large JPEGs are never
loaded whole, and the request body cap is a single per-procedure lookup.

The web editor uploads through the new RPC in 2 MiB chunks with bounded
concurrency under the server's per-user limit.
2026-09-08 21:07:06 +08:00
..
api/v1 feat(attachment): upload files in resumable chunks 2026-09-08 21:07:06 +08:00
gen feat(attachment): upload files in resumable chunks 2026-09-08 21:07:06 +08:00
store feat(spaces): support custom icons and emoji (#6287) 2026-09-07 23:12:18 +08:00
buf.gen.yaml refactor: expose shared memo as memo resource 2026-07-26 21:13:18 +08:00
buf.lock chore(backend): update Go toolchain and dependencies (#5730) 2026-03-16 21:07:52 +08:00
buf.yaml chore: update gitignore 2025-04-17 23:11:36 +08:00
openapi_embed.go feat: add OpenAPI-driven MCP support (#6026) 2026-06-09 09:16:50 +08:00
README.md chore: tweak readme 2024-02-23 08:25:54 +08:00

Guide

Prerequisites

Generate

buf generate

Format

buf format -w