Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d79bd23e94
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const body = await request.text(); | ||
| if (body.length > MAX_BODY_BYTES) return null; |
There was a problem hiding this comment.
Enforce the byte limit while reading the request stream
When collection is enabled, a request without Content-Length is buffered completely by request.text() before the size check runs. A large streamed request can therefore exhaust worker memory rather than receive the intended controlled rejection; the per-client rate limiter does not bound the size of an individual request. Additionally, body.length counts UTF-16 code units, so multibyte JSON exceeding 16 KiB can pass this check. Read the stream with a running byte count and cancel it as soon as it exceeds MAX_BODY_BYTES, before decoding and parsing.
Useful? React with 👍 / 👎.
POST /api/community/survey takes JSON answers, applies the survey's show/hide and validation rules, rate limits by client, and stores visible answers once per submission ID in D1. Collection stays off until launch review. BB-Thread-ID: thr_yz6t8hi7s8 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
d79bd23 to
2ff2623
Compare
Reading the whole body before checking its size let a request without a Content-Length header buffer far past 16 KiB, and the check counted UTF-16 units instead of bytes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Finishers whose coworkers use bb now say how plugins move between them, and the role question gains Marketing or operations and Freelancer, consultant or agency. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Marketing or operations falls back to the Other write-in, and the work question now offers 2–5, 6–10 and more than 10 people. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
abdaf09 to
ab548a2
Compare
Product data and research calls answer it better than a community survey. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ab548a2 to
8d29d39
Compare
Human comments
What was wrong
getbb.app had no way to collect community survey answers. Layer 1 of 4.
What changed
POST /api/community/surveytakes JSON answers and stores them incommunity_survey_response(migration 0011).emailed_atthat Give survey finishers a free sticker claim link #6608 and Email survey finishers their answers and claim link #6609 use, so the stack adds one migration.survey.tsdecides which questions apply, and hidden answers are dropped.Collection stays off (
COMMUNITY_FORMS_ENABLED=false) until launch.How you verified
BB-Thread-ID: thr_yz6t8hi7s8