Commit graph

10559 commits

Author SHA1 Message Date
prakash
6ebe5603a3
remove dangling import 2026-06-30 16:32:41 +05:30
Prakash
6c05477b65
refactor(core): remove duplicate types (#6359)
This PR removes the duplicate companion/provider bridge types
(CompanionClientProvider CompanionClientSearchProvider, and the`view:
any` escape hatch) and wires the real Provider/ProviderView types
directly, now possible since everything lives in `@uppy/core` Net gain
in type safety; no behavior change.

for more context on the approach see description of #6351
2026-06-30 16:23:23 +05:30
prakash
888a29f1ed
Merge branch 'core-merge-5-type-unification' of github.com:qxprakash/uppy into core-merge-5-type-unification 2026-06-24 16:44:20 +05:30
prakash
1f4b8e187c
apply feedback 2026-06-24 16:43:31 +05:30
Prakash
1421d2fb43
Merge branch 'merge-into-core' into core-merge-5-type-unification 2026-06-23 21:23:53 +05:30
Prakash
0b3bbf019e
refactor(core): merge @uppy/provider-views into core (#6358)
see #6351 for more details
2026-06-23 21:21:18 +05:30
Prakash
5a82975452
Merge branch 'merge-into-core' into core-merge-4-provider-views 2026-06-23 18:59:02 +05:30
Prakash
e2b6e36b36
refactor(core): merge @uppy/companion-client into core (#6353)
This PR merges @uppy/companion-client into core and re-exports it via
export maps from `@uppy/core`

should be merged after #6352 

see #6351 for more context

update: this PR should be reviewed after merging #6352
2026-06-23 18:41:31 +05:30
Prakash
0cb2432271
Merge branch 'merge-into-core' into core-merge-3-companion-client 2026-06-23 17:49:51 +05:30
Prakash
2bda51c066
refactor(core): merge @uppy/utils into core (#6352)
This PR merges @uppy/utils into `@uppy/core`

for more context see #6351 

this PR should be reviewed after #6351 gets merged
2026-06-23 17:49:09 +05:30
Prakash
d6e80219d2
Merge branch 'merge-into-core' into core-merge-2-utils 2026-06-23 15:58:23 +05:30
Prakash
ba083dced5
refactor(core): merge @uppy/store-default into core (#6351)
partly addresses #6042 

This PR merges `@uppy/store-default` into core and re-exports it via
export maps from `@uppy/core`

This is 1st of the 5 stacked PRs which I'll create to merge
`provider-views` , `companion-client` , `utils` and `store-default` into
`@uppy/core` the reason for this stacked PRs approach is to make
reviewing easier as 4 out of these 5 PRs are purely mechanical i.e.
`removing package` -> `copying files` -> `updating imports and exports`.
and it invovles changes across lots of files. so it's easier to review
if all the changes are related to a single plugin.
2026-06-23 15:56:50 +05:30
prakash
439787021b
refactor(core): remove duplicate companion/provider bridge types, wire real types 2026-06-22 01:40:33 +05:30
prakash
d6a0132145
refactor(core): merge @uppy/provider-views into core via ./provider-views export 2026-06-22 01:40:32 +05:30
prakash
b3aa4cdd6c
refactor(core): merge @uppy/companion-client into core via ./companion-client export 2026-06-22 01:40:26 +05:30
prakash
156b87ec17
refactor(core): merge @uppy/utils into core via ./utils export 2026-06-22 01:40:25 +05:30
prakash
1c7ede3cd4
refactor(core): merge @uppy/store-default into core via ./store-default export 2026-06-22 01:40:23 +05:30
Kevin van Zonneveld
52cc4b3e5e
Pin third-party GitHub Actions to SHAs (#6327) 2026-06-08 19:51:10 +00:00
Prakash
981fcedd71
@uppy/upgrade devdeps v3 (#6319)
AI disclaimer: AI used
  
  ## Changes
  - **vite 7 → 8** 
- **@vitejs/plugin-react 4 → 6** (peer-requires vite ^8; drops Babel for
oxc)
- **@tailwindcss/vite 4.1 → 4.3** (first 4.x with a vite ^8 peer range)
- `examples/react/vitest.config.ts`: add `resolve.dedupe: ['react',
'react-dom']` : reason explained in comments
2026-06-03 15:39:24 +05:30
Prakash
675b48fa14
@uppy/upgrade devdeps v2 (#6318)
AI disclaimer : AI used

## Changes
- **jsdom 26 → 29** across all packages' devDependencies —
**except`@uppy/aws-s3`** (left at 26; that plugin is being rewritten and
its deps are handled on the rewrite branch).
- **`@uppy/xhr-upload` unit tests migrated from nock to MSW**, and
`nock` dropped from its devDependencies.
  ## Why the test migration was needed
jsdom **28** overhauled resource loading so `XMLHttpRequest` now goes
through jsdom's internal (undici-based) fetch instead of Node's `http`
module ([jsdom 28 release
notes](https://github.com/jsdom/jsdom/releases/tag/28.0.0)).
nock intercepts at the Node `http` / `http.ClientRequest` layer ([nock
README](https://github.com/nock/nock)), so it can no longer see uppy's
upload requests — the mocked responses never arrive and the tests time
out. (This is the long-standing nock + jsdom XHR incompatibility:
[nock#518](https://github.com/nock/nock/issues/518).)

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-03 15:30:55 +05:30
Prakash
1427add64a
@uppy/upgrade-devdeps-v1 (#6317)
Part of the dev-dependency major-version upgrades. These required code
changes so they're split out from the no-code-change batch (#6315).

**AI Disclaimer** : AI Used

- **glob 8 → 13** — `@uppy/locales` scripts: the callback API was
removed, so `getPaths()` uses the promise form and `test.mjs` uses the
named `globSync`.
- **npm-packlist 5 → 11** — `upload-to-cdn.js`: v7+ takes an
`@npmcli/arborist` tree instead of `{ path }`; loads the tree and passes
it to `packlist()`. Adds `@npmcli/arborist` as a devDependency.
- **nock 13 → 14** (`@uppy/companion`) — the v14 @mswjs/interceptors
rewrite crashed the SSRF tests in `http-agent.test.ts`; nock
interception is now kept off by default and only activated for the one
test that mocks a host.
- **@types/use-sync-external-store 0 → 1** — `@uppy/react`: v1's exports
map only exposes extensionless subpaths, so imports use
`use-sync-external-store/shim` and `/with-selector` (runtime supports
both).
2026-06-03 14:38:14 +05:30
Prakash
d7aaab7ad1
@uppy: upgrade dev deps (#6315)
addresses #6297

I'll raise another PR which would include deps which require code
changes
2026-06-02 10:48:58 +08:00
Prakash
7ea7530997
upgrade playwright (#6316)
fixes the timeout which we're facing in "CI / Test" in the past few days
which gets stuck at "Install Playwright Browsers"


https://github.com/transloadit/uppy/actions/runs/26646754991/job/78534314307?pr=6315

tested on my local fork
2026-06-01 18:08:22 +05:30
Prakash
c3c7cef4ed
@uppy: upgrade deps (#6307)
will do a separte PR for changes which would require code changes so
it's easier to review , didn't upgrade any deps for `@uppy/aws-s3` since
we'll merge the rewrite so I think we should do that upgrade in the
rewrite branch before merging.

update : Dependency upgrades which required code changes were raised
separately

- #6309 
- #6310

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-29 18:58:42 +05:30
Prakash
ef370da2b3
Revert "@uppy/tus: don't abort errored request" (#6313)
Reverts transloadit/uppy#6312
2026-05-29 18:48:40 +05:30
Prakash
51acfe9e6c
@uppy/tus: don't abort errored request (#6312)
this fixes #6287 , another similar attempted fix which didn't got merged
: #5683

in #5683 we discussed a more longer term solution but IMO that would be
a breaking change as it would change the event contract

AI Disclaimer : AI Used 

This fix is Manually Tested across **Chrome and Firefox**
2026-05-29 18:42:58 +05:30
Prakash
5519b84409
@uppy: upgrade biome and more improvements (#6244)
- This PR upgrades `biome` from `2.0.5` -> `2.1.2` and adds two new
rules
-
[noUnusedImports](https://biomejs.dev/linter/rules/no-unused-private-class-members)
( we already had suppressions for this rule in code, but the rule itself
was never enabled in the config )
-
[noUnusedPrivateClassMembers](https://biomejs.dev/linter/rules/no-unused-private-class-members/)
- remove stale suppressions. 
- remove stale code.

---------

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2026-05-21 12:28:03 +08:00
Prakash
9143d41bc2
@uppy/companion: upgrade dev deps (#6300)
all the dev deps upgraded excepts for these : 

  - `@types/cors: 2.8.6`
  - `@types/jsonwebtoken: 8.3.7`
  - `@types/morgan: 1.7.37`
  - `@types/node: ^20.19.0`
  - `nock: ^13.1.3`
  
upgrading these to their latest major either breaks the test suite or
requires us to do code changes on our end.
  
  #6297

---------

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2026-05-21 12:26:42 +08:00
Mikael Finstad
3c537e2780
Companion upgrade deps (#6305)
recreates #6296

---------

Co-authored-by: Prakash <qxprakash@gmail.com>
2026-05-21 12:07:05 +08:00
Prakash
d9d44ce5e5
upgrade to express v5 (#6304)
exact copy of #6175 

- I will point the uppy deps upgrade pr to this PR's branch
- no other changes needed in this branch as #6175 was reviewed and all
the comments were resolved

this should be the order of merge : 

1. #6300
2. uppy deps upgrade ( yet to be raised ) 
3. merge this to main
4. merge biome changes #6244 

@mifi let me know if you think otherwise.

---------

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2026-05-21 11:14:23 +08:00
Prakash
d9742ba4e4
Revert "Upgrade to express 5" (#6303)
Reverts transloadit/uppy#6175
2026-05-21 02:36:00 +05:30
Mikael Finstad
489d76717c
Upgrade to express 5 (#6175)
closes #6157

https://expressjs.com/en/guide/migrating-5.html

---------

Co-authored-by: Prakash <qxprakash@gmail.com>
2026-05-20 21:06:46 +05:30
Prakash
ca916f6580
@uppy/transloadit: fix stale assemblyStatus in 'transloadit:assembly-cancelled' event (#6294)
@mifi this is small change which we missed , based on our discussion in
uppy call.

---------

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2026-05-20 13:03:47 +08:00
Prakash
622daa498c
@uppy/examples: update examples after recent breaking changes (#6299) 2026-05-18 21:03:42 +05:30
Mikael Finstad
5efc32a2e7
remove angular eslint (#6164)
closes #6161

---------

Co-authored-by: Prakash <qxprakash@gmail.com>
2026-05-18 20:35:10 +08:00
Prakash
12de077e6d
remove @uppy/instagram (#6257)
closes #5455 , this PR removes all Instagram support from both the
client and Companion server.

Removed:
- Instagram from @uppy/remote-sources (src, package.json, keywords)
- Instagram export from uppy bundle (bundle.ts, index.ts, package.json)
- Companion Instagram OAuth provider (provider/index.js, grant.js)
- Companion standalone helper Instagram env vars (helper.js,
env_example)
- All Companion Instagram tests (providers.test.js,
provider-manager.test.js, fixtures/index.js, mockserver.js)
2026-05-13 14:42:10 +05:30
Prakash
57f8daf55d
@uppy/transloadit: add AssemblyStatus to plugin state (#6267)
- fixes content repo testing area bug
https://github.com/transloadit/content/issues/4943 (tested locally in
content repo)
- Simplifies the testing area code — no need to manually construct the
assembly object and listen for multiple events; just subscribe to state
using `useUppyState` and that's it (tested locally in content repo)
- Addresses
https://transloadit.slack.com/archives/C0AFZGN6W2F/p1775580430051829?thread_ts=1775555821.837409&cid=C0AFZGN6W2F
(one of our customers wanted to create a custom UI around assembly
execution); this would become much easier now (need to verify)
- Addresses
9474e8d8e7/_console/js/features/templates/components/TestingArea/uppy.tsx (L131-L147)
- Partially addresses #6264
2026-05-13 02:52:53 +05:30
Kevin van Zonneveld
0e09bd2096
Harden dependency installs (#6291)
## Why
Recent npm supply-chain compromises showed that dependency installs and
shared CI caches can execute or preserve newly published malicious
packages before advisories catch up. This PR reduces that exposure for
this repo.

## What changed
- Made eligible Yarn installs immutable and removed shared dependency
caching from the manual CDN upload path; existing minimal age gate
remains unchanged.

## Validation
- Ran `git diff --check` across the prepared worktree.
- Audited this PR set for `pull_request_target` and release/deploy/CDN
cache reuse; patched actionable hits.
- Did not run the full test suite; this is a workflow/config-only
change.
2026-05-12 14:14:10 +02:00
Copilot
b32781e280
ci: remove qemu from companion edge deploy workflow (#6282)
## Summary
- replace QEMU-based multi-platform build in
`.github/workflows/companion-deploy.yml` with native runner matrix
builds
- build amd64 on `ubuntu-24.04` and arm64 on `ubuntu-24.04-arm`
- push architecture-specific tags (`edge-amd64`, `edge-arm64`) and
publish `transloadit/companion:edge` as a manifest that references both
- add explicit workflow permissions (`contents: read`) and keep workflow
expression formatting consistent
- remove conflicting `DOCKER_BUILDKIT`/`COMPOSE_DOCKER_CLI_BUILD` env
overrides from the docker job

## Validation
- `corepack yarn check:ci` 
- baseline full run before edits: `corepack yarn check:ci && corepack
yarn build && corepack yarn test` (test step had pre-existing failures
in `@uppy/utils` due `Promise.withResolvers` in this environment)
- parallel validation (Code Review + CodeQL) 

## TODO
- [ ] do the same for release?
https://github.com/transloadit/uppy/blob/main/.github/workflows/release.yml

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mifi <402547+mifi@users.noreply.github.com>
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2026-05-10 13:00:03 +08:00
Mikael Finstad
ad4050b51e
Send token using websocket (#6248)
instead of window.opener - it is more robust

inspired by #4110
closes #6246
closes #4107

Biggest caveat: In cases where window.opener is null (Dropbox), the auth
window will not be auto closed (I don't know how to fix that). It will
show the user a message "Authentication successful. You may now close
this page."
https://github.com/transloadit/uppy/pull/6248/changes#diff-ef5b69c4ab5b83168eaba6f57047bb07c53e3a426f375b42fcb32d79c746872cR22

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Prakash <qxprakash@gmail.com>
2026-05-09 15:03:04 +08:00
Kevin van Zonneveld
f1de25fd6e
Add Yarn npm package age gate (#6281)
## Summary
- add Yarn's native `npmMinimalAgeGate` with a 2 day / 2880 minute
cooldown to help protect against supply chain attacks
- rely on the existing Yarn 4.12.0 install path instead of a custom
package-age script

Closes #5974.

## Verification
- `corepack yarn config get npmMinimalAgeGate` -> `2880`
- `corepack yarn install --immutable`
- `corepack yarn check`
2026-05-07 15:36:44 +02:00
Kevin van Zonneveld
e99a17f1fe
companion: port to TypeScript (#6179)
Supersedes #6178.

This branch keeps the exact same final content as #6178, but splits
history for reviewability:

1. `chore(companion): rename source and test files from .js to .ts`
(pure `git mv`, no content changes)
2. `feat(companion): port Companion to TypeScript` (actual
content/type/schema/build updates)

Validation note:
- Final tree is byte-for-byte identical to `ts-companion`
(`7b5b16a298690b0492de4cc4fab744f998b45570`).

---------

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2026-05-04 20:50:43 +08:00
Prakash
7ac262374f
@uppy/companion-client: fix stale websocket connection (#6269)
fixes #6181

`uploadRemoteFile()` now treats one remote upload attempt as a single
queue-owned unit. Instead of queueing “request token” and “open
websocket / wait for upload” as two separate jobs, it now:

  - acquires one queue slot
  - reuses serverToken if resuming, otherwise requests a new
    token
  - immediately proceeds to the websocket/upload phase within
    that same admitted attempt

That removes the stale-token race where Companion starts its 60s
socket-wait timer before the client’s websocket phase has actually been
admitted by the queue. Retries still reacquire the queue per attempt,
and existing abort/cancel behavior is
preserved.

refer
https://github.com/transloadit/uppy/issues/6181#issuecomment-4295036192
for more context about the bug
2026-04-30 01:54:15 +05:30
Prakash
588e1c0f88
@uppy/core: fix stale comments (#6272)
reported in https://github.com/transloadit/uppy/issues/6270
2026-04-24 17:00:50 +05:30
Enver
b9253f797a
@uppy/dashboard: My Device button respects fileManagerSelectionType (#6258)
Fixes #6256

## Problem

When `fileManagerSelectionType` is set to `'folders'`, clicking the **My
Device** tab/button
still opens the file picker instead of the folder picker.

The inline "browse" link in the tagline correctly respects the setting,
but
`renderMyDeviceAcquirer` in `AddFiles.tsx` always called
`triggerFileInputClick`
regardless of the `fileManagerSelectionType` prop.

## Solution

`renderMyDeviceAcquirer` now reads `fileManagerSelectionType` and calls
`triggerFolderInputClick` when set to `'folders'`, or
`triggerFileInputClick`
for `'files'` and `'both'`.

For `'both'` mode, the button defaults to file selection because a
single
HTML `<input>` cannot handle both files and folders simultaneously
(`webkitdirectory` is all-or-nothing). The folder picker remains
accessible
via the tagline's "browse folders" link.

---------

Co-authored-by: Prakash <qxprakash@gmail.com>
2026-04-24 16:00:02 +05:30
Prakash
71a34b9b37
remove stale heroku job (#6254)
context :
https://transloadit.slack.com/archives/C0FMW9PSB/p1774888069486179
2026-04-08 14:05:59 +02:00
github-actions[bot]
dabd878b87
[ci] release (#6170)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @uppy/utils@7.2.0

### Minor Changes

- 6b1abaa: Introduce modern, minimal TaskQueue to replace
RateLimitedQueue

## @uppy/xhr-upload@5.2.0

### Minor Changes

- 6b1abaa: Introduce modern, minimal TaskQueue to replace
RateLimitedQueue

### Patch Changes

-   Updated dependencies [6b1abaa]
    -   @uppy/utils@7.2.0

## @uppy/companion@6.2.2

### Patch Changes

-   49db42d: Fix bug with 429 not returning JSON response with message
-   4652dc6: upgrade @aws-sdk/ deps in @uppy/companion

## @uppy/transloadit@5.5.1

### Patch Changes

-   4787960: Add type re-export for `AssemblyInstructionsInput`
- 2f6849d: Fix allowMultipleUploadBatches to prevent adding/removing
files while an upload is in progress (#6156)
-   29d2772: remove monkey patch from uppy bundle package
-   Updated dependencies [6b1abaa]
    -   @uppy/utils@7.2.0

## uppy@5.2.4

### Patch Changes

-   29d2772: remove monkey patch from uppy bundle package
-   a86c624: upgrade esbuild in uppy to "^0.27.0"
-   Updated dependencies [6b1abaa]
-   Updated dependencies [4787960]
-   Updated dependencies [2f6849d]
-   Updated dependencies [29d2772]
    -   @uppy/xhr-upload@5.2.0
    -   @uppy/transloadit@5.5.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-25 20:59:50 +05:30
Prakash
2f6849d4da
add missing changeset for #6156 (#6242)
context :
https://transloadit.slack.com/archives/C0FMW9PSB/p1774438325564219

is this the right way to add missing changeset ?
2026-03-25 20:18:18 +05:30
Prakash
1b4c246034
@uppy/examples: update transloadit example (#6238)
discovered while testing the `@uppy/transloadit` plugin 
ideally these examples should have been updated in
c4455ebba
2026-03-21 11:45:17 +05:30
Prakash
a86c6240f4
@uppy: upgrade esbuild from "^0.25.0" -> "^0.27.0" (#6235)
this should fix CI error in bundlers workflow , more context :
https://transloadit.slack.com/archives/C0FMW9PSB/p1773989607853769?thread_ts=1773336079.954969&cid=C0FMW9PSB
2026-03-20 18:09:06 +05:30