Skip to content

Global cap, example app, docs, v9.0.0 - #35

Merged
dmurphy5 merged 3 commits into
dylan/v9-6-iosfrom
dylan/v9-7-hardening
Sep 3, 2026
Merged

Global cap, example app, docs, v9.0.0#35
dmurphy5 merged 3 commits into
dylan/v9-6-iosfrom
dylan/v9-7-hardening

Conversation

@dmurphy5

@dmurphy5 dmurphy5 commented Aug 24, 2026

Copy link
Copy Markdown

This PR sets the library-wide transmission cap to 4 on both platforms. Before, both platforms sent one request at a time per host (an Android semaphore of 1; iOS httpMaximumConnectionsPerHost of 1). On Android, the cap is hard: each request must pass the semaphore. On iOS, the cap is a per-session, connection-level backstop. The window of 3 already bounds the parts of one chunked upload.

The PR also:

  • Adds a chunked demo and a removeUpload button to the example app.
  • Rewrites the README and the CHANGELOG for v9.
  • Sets the version to 9.0.0.

Full suite at the tip: typecheck and lint clean, jest 37, gradle 84, xcodebuild BUILD SUCCEEDED.

🤖 Generated with Claude Code

@dmurphy5 dmurphy5 changed the title v9 7/7: global cap, example app, docs, v9.0.0 Global cap, example app, docs, v9.0.0 Aug 25, 2026
@dmurphy5
dmurphy5 force-pushed the dylan/v9-7-hardening branch from 9c4436d to 061d2dd Compare August 25, 2026 17:36
@dmurphy5
dmurphy5 force-pushed the dylan/v9-7-hardening branch from 061d2dd to 568fd71 Compare August 26, 2026 20:26
@dmurphy5
dmurphy5 force-pushed the dylan/v9-7-hardening branch from 568fd71 to 9281587 Compare August 27, 2026 19:46
@dmurphy5
dmurphy5 marked this pull request as ready for review August 27, 2026 19:51
dmurphy5 and others added 3 commits August 28, 2026 12:47
Android: the shared transfer semaphore goes from 1 (fully serial) to the
design's cap of 4 — a hard cap, since every request passes through it.
iOS: httpMaximumConnectionsPerHost = 4 on both background sessions as a
per-session, connection-level backstop; request-level control for chunked
uploads stays with the window.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The demo copies the 1MB test file (the library takes ownership of a
chunked upload's file), chunkPlans it with a small min/max so it still
splits into a few parts, authors fake parts against httpbin's /put, and
starts the upload. Remove Upload releases the kept manifest and bytes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
README gains a Chunked uploads section (authoring parts with chunkPlan,
file ownership, resume-by-startUpload, expiry) and rewritten startUpload,
accept-rules, removeUpload, chunkPlan, and addListener docs. CHANGELOG
lists the 9.0.0 breaking changes and additions.

Final review fixes:
- CHANGELOG: the transmission-cap entry claimed iOS was previously unlimited;
  v8 set httpMaximumConnectionsPerHost = 1. Reworded to the honest framing —
  a hard worker cap on Android (every request passes the shared semaphore,
  chunked window inside it), a per-session connection-level backstop on iOS
  (= 4, previously 1) with chunked parts bounded by the per-upload window of 3.
- README: completed events carry responseCode/responseBody for simple uploads
  only — a chunked completed has neither (no single response represents N
  parts). Marked optional in the events table and noted at the listener
  snippet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dmurphy5
dmurphy5 force-pushed the dylan/v9-7-hardening branch from 9281587 to a8a9d18 Compare August 28, 2026 16:49
@dmurphy5
dmurphy5 merged commit 5501599 into dylan/v9-3-configure Sep 3, 2026
3 checks passed
dmurphy5 added a commit that referenced this pull request Sep 3, 2026
This PR moves the merged chunked-upload work onto master. It replaces
#39, which conflicted.

The stacked PRs #32#35 were reviewed and merged, but their stack was
rooted on `dylan/v9-3-configure`, so their four squash commits landed on
that branch and not on master. This branch carries those same four
commits, cherry-picked onto the current master. The tree at the tip is
byte-identical to the merged stack. There are no new changes, and there
are no conflicts: the branch is a fast-forward of master.

- Chunked JS surface — types, codegen spec, chunkPlan (#32)
- Android chunked-upload engine (#33)
- iOS chunked-upload engine (#34)
- Global cap, example app, docs, v9.0.0 (#35)

Prefer "Rebase and merge", so the four commits keep their identities on
master. After the merge, master is v9.0.0 and gets the `v9.0.0` tag.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@dmurphy5
dmurphy5 deleted the dylan/v9-7-hardening branch September 3, 2026 15:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants