Repository navigation
Revive Bubble uploads with current Uppy and tested release candidates - #2
Merged
Merged
Conversation
kvz
marked this pull request as ready for review
October 29, 2026 23:06
Member
Author
|
Implementation and validation are ready for human review in #2 at
The local Bubble-only ZIP and SHA-256 are in Revive Bubble uploads with current Uppy and tested release candidates — open |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The 2019 plugin depends on deprecated Robodog and has no tests or release checks. Bubble builders need supported uploads and encoding results while existing VideoWrapper and open-action IDs keep working. This follows transloadit/zapier’s October 14–21 modernization, adapted to Bubble’s editor-owned export and manual publication.
Changes
errorReporting: falsedoes not disable plugin error reports.Validation
Runtime/tooling/docs +1,168 / −90; tests +1,192 / −0; lockfile +3,240 / −0, in 47 files. Thirteen test fixtures/screenshots are binary and have no line counts.
yarn checkpasses lint, TypeScript, 58 unit tests, 93.65% line coverage and deterministic generation. The conversion preserves the Bubble export byte-for-byte. Its harness regression failed at desktop/390px before restoring empty output state and passed after; a compiler probe confirms browserprocess/Bufferare rejected. Config-only changes use the existing behavioral suites rather than artificial source-text tests.yarn release:prepareproduces the allowlisted export ZIP/SHA-256. Export entries match the checkout; legacy VideoWrapper/API files are unchanged. Changeset status confirms a major bump and workflow YAML parses. Wording/config/metadata changes have no artificial source-text tests.Council review
TypeScript conversion: four scoped rounds; final rounds 3 and 4 are clean on
0b27c38a433495ee315ac0a82ac3b11333d9faba. The first two reviews led to preserving unpublished harness outputs and the browser-only type boundary. Both final rounds returned “No issues found.” after those fixes.Original revival: ten-round cap reached
Two consecutive clean rounds were not achieved before the requested maximum of ten. All accepted findings through round 10 are fixed and tested. The final fixes were not followed by an eleventh council round; this is presented for human review with that limitation explicit.
Rounds 1–3 fixed blank allowlists, cancelled/late callbacks, duplicate error events, property-error recovery, modal label/keyboard cleanup, retry completion and dismissed-picker background processing. The original single-file limit remains because partial multi-file retries lose results.
Rounds 4–6 fixed retry signing validation, Dashboard Retry controls, configuration error recovery/deduplication, stale tus URLs, selected-file revalidation and reset before Uppy exists. Round 7 resets transfer-completion flags after processing failure and isolates candidate checks from Changesets’ persisted credential.
Round 8 filters superseded Assembly errors and retires the old SDK watcher before Retry. Round 9 rejects duplicate completions from previous successful cycles and documents remaining SDK telemetry. Round 10 deduplicates legacy notifications before POST; its unit regression observed two calls before the fix and one after. Empty/null params now name the missing signed JSON rather than exposing a parser error.
The pinned official CDN is an explicitly trusted runtime dependency. Generic CDN-compromise/SRI hardening is outside this revival.
CI prerequisites and Bubble handoff
The opentest credentials are configured as both Actions and Dependabot secrets: BUBBLE_E2E_TRANSLOADIT_KEY and BUBBLE_E2E_TRANSLOADIT_SECRET. CI maps them to TRANSLOADIT_KEY/TRANSLOADIT_SECRET; no Template secret is needed. Run 41109506352 is green on
0b27c38a433495ee315ac0a82ac3b11333d9faba: Node 22.23.4 and 26.12.1 check/browser jobs and the real-API e2e job all pass. The e2e log confirms all 12 tests passed with no skips, including signed upload, processing and result verification. One blockinggh-run-watchcompleted successfully. The credential prerequisite #3 is resolved. Fork PRs skip only real-API e2e.Refs #1. Installing in a real Bubble test app, marketplace publication and verifying the listing URL require Kevin’s Bubble login and remain unexecuted. Follow the exact editor handoff; close #1 only after those acceptance steps pass.
User test
Independent UX reviews passed desktop/390px modal and inline flows, selection, error/reset recovery, processing/results and reopened modals. The review exposed collapsed inline height, fixed with a resize regression, and confirmed the restored Retry control. Final capture has no console/page errors, failed requests or horizontal overflow and real results at both widths. All twelve screenshots are byte-identical to the prior approved capture. Final narrow UX confirmation passed: active Assembly filtering, legacy notification deduplication and the clearer missing-params message. The subsequent test-only readiness change leaves source/export/screenshots unchanged and both Node CI jobs pass. Stock Uppy styling remains. Actual Bubble acceptance is the separate login-dependent handoff above.
Evidence:
test/evidence/and local/tmp/bubble-usertest-20261029/, including the direct final Playwright stdoutfinal-api-run.log. Transport-failure responses are fixtures using the actual Uppy CDN; the signed upload/resize/download test uses the real API.Before / After
Same empty picker state, 800px viewport height, light theme (no theme setting is exposed):
New inline element: desktop, 390px. Selection, error and completed states are captured at both widths in the same directory.
🤖 Claimed by kvz on
framework1/bubble-pluginsince 2026-10-30 · resume:codex resume 01a18956-04ed-7730-8e93-34911ec3771e