fix: increase maximum file size limit to 64MB#3184
Conversation
There was a problem hiding this comment.
Code Review
This pull request increases the maximum file size for Scratch project conversion from 32MB to 64MB. Feedback suggests that the conversion timeout should also be increased, as the current 60-second limit may be insufficient for uploading and processing larger 64MB files.
There was a problem hiding this comment.
This is a simple one-line constant bump, but a few things are worth verifying before merging.
Key concerns:
- The OpenAPI spec is now stale — it still documents 32 MiB.
- The
convertTimeout(60 s) was not revisited; on slow connections users uploading near the new 64 MB ceiling will time out before the server ever responds. - There is no confirmation in the PR that the backend
/util/sb2xbphandler was updated in lockstep; the client-side check is a UX convenience only.
| import { humanizeFileSize } from '@/utils/utils' | ||
|
|
||
| const maxFileSize = 32 * 1024 * 1024 // 32MB | ||
| const maxFileSize = 64 * 1024 * 1024 // 64MB |
There was a problem hiding this comment.
Backend alignment not confirmed. The client-side maxFileSize guard is a UX convenience — it is not a security boundary. If the backend /util/sb2xbp handler still enforces 32 MB (or any value below 64 MB), requests in the 32–64 MB range will be sent successfully by the browser but rejected server-side with a generic error rather than the friendly message this check provides.
Please add a comment (or PR description note) cross-referencing the corresponding backend configuration change that raised the limit to 64 MB, so future maintainers can verify the two sides stay in sync. E.g.:
// 64MB — must match the limit enforced by the backend /util/sb2xbp handler.
const maxFileSize = 64 * 1024 * 1024|
|
||
| const maxFileSize = 32 * 1024 * 1024 // 32MB | ||
| const maxFileSize = 64 * 1024 * 1024 // 64MB | ||
| const convertTimeout = 60 * 1000 // 60s |
There was a problem hiding this comment.
convertTimeout not scaled with the new limit. The 60-second timeout covers the entire round-trip up to response headers — it includes the upload phase. On a 1 Mbps uplink, uploading 64 MB takes ~8 minutes, so users near the new ceiling on average home connections will reliably hit this timeout before the server even starts converting.
Consider whether the timeout should be increased proportionally, or whether upload and processing timeouts should be separated.
* Update UI empty/error default images (#3134) * update ui empty/error default images * compress svg size * rename image * adjust svg size * chore(deps): bump github.com/goplus/xgolsw to 0.20.0 in /tools/spxls (#3163) Signed-off-by: Aofei Sheng <aofei@aofeisheng.com> * feat(spx-gui): optimize video cut preview during animation generation (#3150) * optimize video cut preview during animation generation * use css variables for track padding * fix details * remove page for test * optimize code * queue video seeks to keep animation preview responsive during dragging * chore(deps): bump spx to 2.0.1 (#3162) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * Add empty `ui/prototype/` to avoid Vercel deployment failure (#3164) * Add empty ui/prototype/ to avoid Vercel deployment failure * Update ui/prototype/package.json Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * feat(animation): migrate sound binding from onStart to onPlay (#3168) * feat(animation): migrate sound binding from onStart to onPlay - Export animation sound binding using `onPlay` instead of `onStart` to align with the animation lifecycle semantics in spx v2.0.0 - Load sound binding from `onPlay` as the primary field; fall back to legacy `onStart` for backward compatibility with existing projects - Update `RawAnimationConfig`: `onPlay` is now the current API field, `onStart` is moved to the legacy section - Add tests for the new export behavior and legacy onStart loading Fixes #3116 Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * fix(animation): add missing blank line between test cases Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * feat(animation): add loop field to ActionConfig type Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * feat(animation): add soundLoop field with default false, parse loop from raw config - Add soundLoop boolean field (default false) to AnimationInits and Animation class - Add setSoundLoop() method to Animation - Parse loop from onPlay/onStart in load() for backward compatibility - Export loop: true in onPlay only when soundLoop is true (omitting it preserves old behavior) - Preserve soundLoop in clone() - Add tests for load/export/clone of soundLoop field Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * fix(animation): always export loop field in onPlay, including loop: false Export loop: false when soundLoop is false so the exported config is explicit. "default false" only applies during loading when loop is absent from the raw config. Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * fix(animation): remove onStart.loop handling, no legacy loop field onStart is a legacy field predating the loop feature; old configs using onStart never contain loop. Only read loop from onPlay. Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * fix(animation): only set soundLoop when sound is valid soundLoop is now set inside the else branch so it is only assigned when the sound lookup succeeds and soundId is set. Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * fix(animation): assert soundLoop is false in legacy onStart load test Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * fix(animation): remove duplicate loop export test case 'should export loop: false in onPlay when soundLoop is false (default)' is fully covered by 'should export sound binding using onPlay' which already asserts { play: ..., loop: false }. Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> --------- Co-authored-by: xgopilot <noreply@goplus.org> Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> * fix(animation): revert sound binding to onStart temporarily (#3174) * fix(animation): revert sound binding to onStart temporarily * test(animation): document temporary skipped onPlay cases * docs(animation): clarify temporary onStart export comment * Sync SPX overload documentation mappings (#3175) * Sync SPX overload documentation mappings * Address review feedback * Handle fennoai review feedback * refactor: update descriptions and initialization guidelines for onStart (#3182) * fix: increase maximum file size limit to 64MB (#3184) * docs(openapi): make product APIs resource-oriented (#3146) Replace the existing product API paths with the new resource-oriented contract. Move authenticated-user collections under `/user/*`, public user collections under `/users/{username}/*`, and relationship membership operations to idempotent `PUT` routes. Add operation IDs, specific path parameter names, and `Location` headers for created resources while preserving moved-resource response semantics for renamed resources. Updates #3144 Signed-off-by: Aofei Sheng <aofei@aofeisheng.com> --------- Signed-off-by: Aofei Sheng <aofei@aofeisheng.com> Co-authored-by: chennan <chennan@qiniu.com> Co-authored-by: Aofei Sheng <aofei@aofeisheng.com> Co-authored-by: Hanxing Yang <nighca@live.cn> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: nighca <1492263+nighca@users.noreply.github.com> Co-authored-by: fennoai[bot] <231223108+fennoai[bot]@users.noreply.github.com> Co-authored-by: xgopilot <noreply@goplus.org> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: wyvern <wuxinyi@qiniu.com>
fix: https://github.com/goplus/sb2xbp/issues/341