diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 000000000..a67cbdf61
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,248 @@
+## Uppy development
+
+Fork the repository into your own account first. See the [GitHub Help](https://help.github.com/articles/fork-a-repo/) article for instructions.
+
+After you have successfully forked the repo, clone and install the project:
+
+```bash
+git clone git@github.com:YOUR_USERNAME/uppy.git
+cd uppy
+npm install
+npm run bootstrap
+```
+
+We use lerna to manage the many plugin packages Uppy has. You should always do `npm run bootstrap` after an `npm install` to make sure lerna has installed the dependencies of each package and that the `package-lock.json` in the repository root is up to date.
+
+Our website’s examples section is also our playground, please read the [Local Previews](#Local-Previews) section to get up and running.
+
+## Tests
+
+Unit tests are using Jest and can be run with:
+
+```bash
+npm run test:unit
+```
+
+For acceptance (or end-to-end) tests, we use [Webdriverio](http://webdriver.io). For it to run locally, you need to install a Selenium standalone server. Just follow [the guide](http://webdriver.io/guide.html) to do so. You can also install a Selenium standalone server from NPM:
+
+```bash
+npm install selenium-standalone -g
+selenium-standalone install
+```
+
+And then launch it:
+
+```bash
+selenium-standalone start
+```
+
+After you have installed and launched the selenium standalone server, run:
+
+```bash
+npm run test:acceptance:local
+```
+
+By default, `test:acceptance:local` uses Firefox. You can use a different browser, like Chrome, by passing the `-b` flag:
+
+```bash
+npm run test:acceptance:local -- -b chrome
+```
+
+> Note: The `--` is important, it tells npm that the remaining arguments should be interpreted by the script itself, not by npm.
+
+You can run in multiple browsers by passing multiple `-b` flags:
+
+```bash
+npm run test:acceptance:local -- -b chrome -b firefox
+```
+
+When trying to get a specific integration test to pass, it's not that helpful to continuously run _all_ tests. You can use the `--suite` flag to run tests from a single `./test/endtoend` folder. For example, `--suite thumbnails` will only run the tests from `./test/endtoend/thumbnails`. Of course, it can also be combined with one or more `-b` flags.
+
+```bash
+npm run test:acceptance:local -- -b chrome --suite thumbnails
+```
+
+These tests are also run automatically on Travis builds with [SauceLabs](https://saucelabs.com/) cloud service using different OSes.
+
+## Releases
+
+Before doing a release, check that the examples on the website work:
+
+```bash
+npm start
+open http://localhost:4000/examples/dashboard
+```
+
+Also check the other examples:
+
+```bash
+cd examples/EXAMPLENAME
+npm install
+npm start
+```
+
+Releases are managed by [Lerna](https://github.com/lerna/lerna/tree/2.x). We do some cleanup and compile work around releases too. Use the npm release script:
+
+```bash
+npm run release
+```
+
+If you have two factor authentication enabled on your npm account, you will need to temporarily disable it when doing an uppy release. Lerna doesn't support 2FA, and while there are workarounds, they don't reliably work for us. (In particular, using the `npm_config_otp` environment variable will fail because the token expires by the time the release script starts publishing anything.)
+
+```bash
+npm profile disable-2fa
+npm run release
+npm profile enable-2fa auth-only
+```
+
+Other things to keep in mind during release:
+
+* When doing a minor release below 1.0, or a major release >= 1.0, of the `@uppy/core` package, the peerDependency of the plugin packages needs to be updated first. Eg when updating from 0.25.5 to 0.26.0, the peerDependency of each should be `"@uppy/core": "^0.26.0"` before doing `npm run release`.
+* When publishing a new package, publish it manually first with `npm publish --access public`, since by default `@`-prefixed packages are private on NPM, and Lerna will fail.
+
+After a release, the demos on transloadit.com should also be updated. After updating, check that some things work locally:
+
+ - the demos in the demo section work (try one that uses an import robot, and one that you need to upload to)
+ - the demos on the homepage work and can import from GDrive, Insta, Dropbox
+
+If you don't have access to the transloadit.com source code ping @arturi or @goto-bus-stop and we'll pick it up. :sparkles:
+
+## Website development
+
+We keep the [uppy.io](http://uppy.io) website in `./website`, so it’s easy to keep docs and code in sync as we are still iterating at high velocity.
+
+The site is built with [Hexo](http://hexo.io/), and Travis automatically deploys this onto GitHub Pages (it overwrites the `gh-pages` branch with Hexo's build at every change to `master`). The content is written in Markdown and located in `./website/src`. Feel free to fork & hack!
+
+Even though bundled in this repo, the website is regarded as a separate project. As such, it has its own `package.json` and we aim to keep the surface where the two projects interface as small as possible. `./website/update.js` is called during website builds to inject the Uppy knowledge into the site.
+
+### Local previews
+
+It is recommended to exclude `./website/public/` from your editor if you want efficient searches.
+
+To install the required node modules, type:
+
+```bash
+npm install && cd website && npm install && cd ..
+```
+
+For local previews on http://localhost:4000, type:
+
+```bash
+npm start
+```
+
+This will watch the website, as well as Uppy, as the examples, and rebuild everything and refresh your browser as files change.
+
+Then, to work on, for instance, the XHRUpload example, you would edit the following files:
+
+```bash
+${EDITOR} src/core/Core.js \
+ src/plugins/XHRUpload.js \
+ src/plugins/Plugin.js \
+ website/src/examples/xhrupload/app.es6
+```
+
+And open in your web browser.
+
+## CSS guidelines
+
+The CSS standards followed in this project closely resemble those from [Medium's CSS Guidelines](https://gist.github.com/fat/a47b882eb5f84293c4ed). If something is not mentioned here, follow their guidelines.
+
+### Naming conventions
+
+This project uses naming conventions adopted from the SUIT CSS framework.
+[Read about them here](https://github.com/suitcss/suit/blob/master/doc/naming-conventions.md).
+
+To quickly summarize:
+
+#### Utilities
+
+Syntax: u-[sm-|md-|lg-]
+
+```css
+.u-utilityName
+.u-floatLeft
+.u-lg-col6
+```
+
+#### Components
+
+Syntax: [-][-descendentName][--modifierName]
+
+```css
+.twt-Button /* Namespaced component */
+.MyComponent /* Components pascal cased */
+.Button--default /* Modified button style */
+.Button--large
+
+.Tweet
+.Tweet-header /* Descendents */
+.Tweet-bodyText
+
+.Accordion.is-collapsed /* State of component */
+.Accordion.is-expanded
+```
+
+### SASS
+
+This project uses SASS, with some limitations on nesting. One-level-deep nesting is allowed, but nesting may not extend a selector by using the `&` operator. For example:
+
+```sass
+/* BAD */
+.Button {
+ &--disabled {
+ ...
+ }
+}
+
+/* GOOD */
+.Button {
+ ...
+}
+
+.Button--disabled {
+ ...
+}
+```
+
+### Mobile-first responsive approach
+
+Style to the mobile breakpoint with your selectors, then use `min-width` media queries to add any styles to the tablet or desktop breakpoints.
+
+### Selector, rule ordering
+
+- All selectors are sorted alphabetically and by type.
+- HTML elements go above classes and IDs in a file.
+- Rules are sorted alphabetically.
+
+```sass
+/* BAD */
+.wrapper {
+ width: 940px;
+ margin: auto;
+}
+
+h1 {
+ color: red;
+}
+
+.article {
+ width: 100%;
+ padding: 32px;
+}
+
+/* GOOD */
+h1 {
+ color: red;
+}
+
+.article {
+ padding: 32px;
+ width: 100%;
+}
+
+.wrapper {
+ margin: auto;
+ width: 940px;
+}
+```
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..be83e490e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,5 @@
+---
+name: Bug report
+about: Let us know about an unexpected error, a crash, or an incorrect behavior.
+labels: Bug, Triage
+---
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 000000000..49ae7f50e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,5 @@
+---
+name: Feature request
+about: Suggest a new feature or other enhancement.
+labels: Feature, Triage
+---
diff --git a/.github/ISSUE_TEMPLATE/integration_help.md b/.github/ISSUE_TEMPLATE/integration_help.md
new file mode 100644
index 000000000..b1ab0eb59
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/integration_help.md
@@ -0,0 +1,14 @@
+---
+name: Integration help
+title: Please use the community forum (or paid support) instead
+about: Do you need assistance with building the Uppy client in your bundler, or running Companion on your own preferred server platform?
+labels: Not Accepted
+---
+
+Transloadit is providing Uppy free of charge. If you want you can self-host all components and never pay us a dime. There's docs and tests and your Bugs and Feature Requests are always welcome on GitHub.
+
+There is also a different category of support that we'd like to call Integration Help: making things work for you, that are already reported working for the larger community.
+
+As much as we'd like to provide detailed integration help to each non-paying user, Uppy has reached a point where this is no longer sustainable for our small crew. We end up investing our time in a million different projects, but without money flowing back, we can't ramp up our team along with the demand, spreading our team ever thinner, eventually grinding development to a halt.
+
+This is not where we want to be, so in order to offer enthusiasts, businesses, and enterprises assistance in a sustainable way, we're providing community based integration help for free at , and offer business paid support via .
diff --git a/.gitignore b/.gitignore
index f53c5f37a..619980017 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@ Thumbs.db
npm-debug.log
env.sh
node_modules
+.cache
dist/
lib/
@@ -20,9 +21,10 @@ website/themes/uppy/_config.yml
npm-debug.log*
nohup.out
-examples/bundled-example/bundle.js
+examples/dev/bundle.js
uppy-*.tgz
.eslintcache
+.cache
output/*
!output/.keep
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e558b3cfb..aec1f33b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-Our combined changelog and roadmap. It contains todos as well as dones.
+-Our combined changelog and roadmap. It contains todos as well as dones.
Items can be optionally be tagged tagged by GitHub owner issue if discussion
happened / is needed.
@@ -56,6 +56,7 @@ PRs are welcome! Please do open an issue to discuss first if it's a big feature,
- [ ] transloadit: option for StatusBar’s upload button to act as a "Start assembly" button? Useful if an assembly uses only import robots, such as /s3/import to start a batch transcoding job.
- [ ] provider: Add Facebook, OneDrive, Box
- [ ] provider: change ProviderViews signature to receive Provider instance in second param. ref https://github.com/transloadit/uppy/pull/743#discussion_r180106070
+- [ ] provider: add sorting, filtering, previews #254
- [ ] core: css-in-js, while keeping non-random classnames (ideally prefixed) and useful preprocessor features. also see simple https://github.com/codemirror/CodeMirror/blob/master/lib/codemirror.css (@arturi, @goto-bus-stop)
- [ ] webcam: Stop recording when file size is exceeded, should be possible given how the MediaRecorder API works
- [ ] dashboard: add option to disable uploading from local disk #657
@@ -73,67 +74,134 @@ PRs are welcome! Please do open an issue to discuss first if it's a big feature,
- [ ] webcam: Specify the resolution of the webcam images. We should add a way to specify any custom constraints to the Webcam plugin #876
- [ ] transloadit: consider adding option to append result link from transloadit to the link thing in the Dashboard file block #1177
- [ ] Consider uploading image thumbnails too #1212
+- [ ] Add `directories-dropped` event #849
- [ ] dashboard: if you specified a delete endpoint, the “remove/cancel upload” button remains after the upload and it not only removes, but also sends a request to that endpoint #1216
- [ ] dashboard: Show upload speed too if `showProgressDetails: true`. Maybe have separate options for which things are displayed, or at least have css-classes that can be hidden with `display: none` #766
- [ ] react: Component wrappers to manage the Uppy instance, many people initialize it in render() which does not work correctly so this could make it easier for them https://github.com/transloadit/uppy/pull/1247#issuecomment-458063951
- [ ] core: Fire event when a restriction fails #1251
+- [ ] core: customizing metadata fields, boolean metadata; see #809, #454 and related (@arturi)
+- [ ] goldenretriever: confirmation before restore, add “ghost” files #443 #257 (@arturi)
+- [ ] test: add typescript with JSDoc (@arturi)
+- [ ] locale: investigate preact-i18n@1.2.1, or our own script to report on missing i18n strings
+- [ ] build: utilize https://github.com/jonathantneal/postcss-preset-env, maybe https://github.com/jonathantneal/postcss-normalize (@arturi)
+- [ ] dashboard: allow minimizing the Dashboard during upload (Uppy then becomes just a tiny progress indicator) (@arturi)
+- [ ] fix incorrectly rotated image thumbnails #472
+- [ ] dragdrop: allow customizing arrow icon https://github.com/transloadit/uppy/pull/374#issuecomment-334116208 (@arturi)
+- [ ] show thumbnails when connecting with Google Drive #1162 (@ifedapoolarewaju)
## 1.0 Goals
What we need to do to release Uppy 1.0
-- [ ] website: big release blog post
-- [ ] website: add 2 real world demos (avatar, form elements: github-comment-style-textarea)
- [ ] chore: hunt down all `@TODO`s and either fix, or remove, or move to github issues/changelog backlog
- [ ] chore: remove dead code/commented blocks
- [ ] chore: remove the not-working npm scripts
- [ ] chore: rewrite all code based on prettier+standardjs.com
-- [ ] core: uppy should not crash or be slow for many files. Specifically: be able to drop 5 files (or 7mb) without the upload button to take 2 seconds to appear
+- [ ] locale: update the locales of languages that we know ourselves. leave rest to community
+- [ ] locale: cdn (just in folder like Robodog, will attach to global) / for module to all languages in one big `@uppy/locales`
+- [ ] feature: basic React Native support (@arturi, @ifedapoolarewaju)
+- [ ] QA: add one integration test (or add to existing test) that uses more exotic (tus) options such as `useFastRemoteRetry` or `removeFingerprintOnSuccess` https://github.com/transloadit/uppy/issues/1327 (@arturi, @ifedapoolarewaju)
- [ ] QA: manually test in multiple browsers and mobile devices again (SauceLabs can do Android/iOS too) (@nqst)
-- [x] QA: add one integration test that uses a Provider — added Url, Google Drive/Instagram/Dropbox tests are written, but tricky to automate (@ife)
-- [ ] QA: add one integration test that uses more exotic (tus) options such as `useFastRemoteRetry` (@arturi)
-- [ ] feature: preset for Transloadit that mimics jQuery SDK, check https://github.com/transloadit/jquery-sdk docs (@goto-bus-stop)
+- [ ] website: replace transloadit example with robodog example <-- add transloadit test key with restricted usage (no need to sign up yourself to try it)
+- [ ] website: big release blog post or series
+- [ ] website: design polish
+- [ ] companion: rename `serverUrl` and `serverPattern` to `companionUrl` and `companionAllowedHosts` (@ifedapoolarewaju)
+- [ ] transloadit: add error reporting, see https://github.com/transloadit/jquery-sdk/blob/891e99b08dd8142d8d8adc0553e6511967635ad7/js/lib/Modal.js#L122-L136 (@goto-bus-stop, @arturi)
+- [ ] transloadit: should adhere cancel event and abort assembly (@arturi, @goto-bus-stop)
+- [ ] dashboard: optional alert `onbeforeunload` while upload is in progress, safeguarding from accidentaly navigating away from a page with an ongoing upload
+
+- [x] core: uppy should not crash or be slow for many files. Specifically: be able to drop 5 files (or 7mb) without the upload button to take 2 seconds to appear
+- [x] uppy-server: bump minor and deprecate that on npm in favour of @uppy/companion (@arturi)
- [x] dashboard: implement Alex and Artur’s Dashboard redesign (@arturi)
-- [ ] feature: basic React Native support (@arturi owner+ios, @ife android)
-- [x] refactoring: Make `uppy-server` module live in main Uppy repo in `./server` as a second stage todo (after Lerna is done and we're happy) (@ife)
-- [x] QA: add one integration test that uses a Webpack and React/Redux environment (e.g. via `create-react-app`) (@goto-bus-stop)
-- [x] refactoring: split uppy into small packages, Lerna.js repo? and figure out how to share styles (during work, maybe add PR warning in `.github/*`? use `git mv` for everything) (@goto-bus-stop, @arturi)
-- [x] QA: make it so that all integration tests use `npm pack` and `npm install` first (@ife)
- [x] docs: on using plugins, all options, list of plugins, i18n
- [x] feature: beta file recovering after closed tab / browser crash
- [x] feature: easy integration with React (UppyReact components)
- [x] feature: finish the direct-to-s3 upload plugin and test it with the flow to then upload to :transloadit: afterwards. This is because this might influence the inner flow of the plugin architecture quite a bit
+- [x] feature: preset for Transloadit that mimics jQuery SDK, check https://github.com/transloadit/jquery-sdk docs (@goto-bus-stop)
- [x] feature: Redux and ReduxDevTools support (currently mirrors Uppy state to Redux)
- [x] feature: restrictions: by size, number of files, file type
+- [x] QA: add one integration test that uses a Provider — added Url, Google Drive/Instagram/Dropbox tests are written, but tricky to automate (@ife)
+- [x] QA: add one integration test that uses a Webpack and React/Redux environment (e.g. via `create-react-app`) (@goto-bus-stop)
+- [x] QA: make it so that all integration tests use `npm pack` and `npm install` first (@ife)
- [x] QA: test uppy server. benchmarks / stress test. multiple connections, different setups, large files (10 GB)
- [x] QA: tests for core and utils
+- [x] refactoring: Make `uppy-server` module live in main Uppy repo in `./server` as a second stage todo (after Lerna is done and we're happy) (@ife)
- [x] refactoring: possibly switch from Yo-Yo to Preact, because it’s more stable, solves a few issues we are struggling with (onload being weird/hard/modern-browsers-only with bel; no way to pass refs to elements; extra network requests with base64 urls) and mature, “new standard”, larger community
+- [x] refactoring: split uppy into small packages, Lerna.js repo? and figure out how to share styles (during work, maybe add PR warning in `.github/*`? use `git mv` for everything) (@goto-bus-stop, @arturi)
- [x] refactoring: webcam plugin
- [x] uppy-server: add uppy-server to main API service to scale it horizontally. for the standalone server, we could write the script to support multiple clusters. Not sure how required or neccessary this may be for Transloadit's API service.
- [x] uppy-server: better error handling, general cleanup (remove unused code. etc)
- [x] uppy-server: security audit
- [x] uppy-server: storing tokens in user’s browser only (d040281cc9a63060e2f2685c16de0091aee5c7b4)
-## 0.31.0
+## 0.30.3
-- [ ] core: customizing metadata fields, boolean metadata; see #809, #454 and related (@arturi)
-- [ ] goldenretriever: confirmation before restore, add “ghost” files #443 #257 (@arturi)
-- [ ] build: utilize https://github.com/jonathantneal/postcss-preset-env, maybe https://github.com/jonathantneal/postcss-normalize (@arturi)
-- [ ] fix incorrectly rotated image thumbnails #472
+Released: 2019-03-08
-# next
+| Package | Version | Package | Version |
+|-|-|-|-|
+| @uppy/aws-s3-multipart | 0.30.3 | @uppy/provider-views | 0.30.3 |
+| @uppy/aws-s3 | 0.30.3 | @uppy/react | 0.30.3 |
+| @uppy/companion-client | 0.28.3 | @uppy/redux-dev-tools | 0.30.3 |
+| @uppy/companion | 0.17.3 | @uppy/robodog | 0.30.3 |
+| @uppy/core | 0.30.3 | @uppy/status-bar | 0.30.3 |
+| @uppy/dashboard | 0.30.3 | @uppy/store-default | 0.28.3 |
+| @uppy/drag-drop | 0.30.3 | @uppy/store-redux | 0.28.3 |
+| @uppy/dropbox | 0.30.3 | @uppy/thumbnail-generator | 0.30.3 |
+| @uppy/file-input | 0.30.3 | @uppy/transloadit | 0.30.3 |
+| @uppy/form | 0.30.3 | @uppy/tus | 0.30.3 |
+| @uppy/golden-retriever | 0.30.3 | @uppy/url | 0.30.3 |
+| @uppy/google-drive | 0.30.3 | @uppy/utils | 0.30.3 |
+| @uppy/informer | 0.30.3 | @uppy/webcam | 0.30.3 |
+| @uppy/instagram | 0.30.3 | @uppy/xhr-upload | 0.30.3 |
+| @uppy/progress-bar | 0.30.3 | uppy | 0.30.3 |
+
+- @uppy/dashboard: Dashboard a11y improvements: trap focus in the active panel only (#1272 / @arturi)
+- @uppy/companion: Make providers support react native (#1286 / @ifedapoolarewaju)
+- @uppy/xhr-upload: Reject cancelled uploads (#1316 / @arturi)
+- @uppy/aws-s3: Avoid throwing error when file has been removed (#1318 / @craigjennings11)
+- @uppy/companion: Remove resources requirements for companion (#1311 / @kiloreux)
+- @uppy/webcam: Don’t show Smile! if countdown is false (#1324 / @arturi)
+- docs: update webpack homepage URLs, update Robodog readme (#1323 / @goto-bus-stop)
+
+## 0.30.1 - 0.30.2
+
+| Package | Version | Package | Version |
+|-|-|-|-|
+| @uppy/aws-s3-multipart | 0.30.2 | @uppy/provider-views | 0.30.2 |
+| @uppy/aws-s3 | 0.30.2 | @uppy/react | 0.30.2 |
+| @uppy/companion-client | 0.28.2 | @uppy/redux-dev-tools | 0.30.2 |
+| @uppy/companion | 0.17.2 | @uppy/robodog | 0.30.2 |
+| @uppy/core | 0.30.2 | @uppy/status-bar | 0.30.2 |
+| @uppy/dashboard | 0.30.2 | @uppy/store-default | 0.28.2 |
+| @uppy/drag-drop | 0.30.2 | @uppy/store-redux | 0.28.2 |
+| @uppy/dropbox | 0.30.2 | @uppy/thumbnail-generator | 0.30.2 |
+| @uppy/file-input | 0.30.2 | @uppy/transloadit | 0.30.2 |
+| @uppy/form | 0.30.2 | @uppy/tus | 0.30.2 |
+| @uppy/golden-retriever | 0.30.2 | @uppy/url | 0.30.2 |
+| @uppy/google-drive | 0.30.2 | @uppy/utils | 0.30.2 |
+| @uppy/informer | 0.30.2 | @uppy/webcam | 0.30.2 |
+| @uppy/instagram | 0.30.2 | @uppy/xhr-upload | 0.30.2 |
+| @uppy/progress-bar | 0.30.2 | uppy | 0.30.2 |
+
+- @uppy/robodog: Add Robodog to CDN (#1304 / @kvz, @arturi)
## 0.30.0
-- [ ] dashboard: allow minimizing the Dashboard during upload (Uppy then becomes just a tiny progress indicator) (@arturi)
-- [ ] test: add typescript with JSDoc (@arturi)
-- [ ] dragdrop: allow customizing arrow icon https://github.com/transloadit/uppy/pull/374#issuecomment-334116208 (@arturi)
-- [ ] dashboard: cancel button for transloadit assemblies (@arturi, @goto-bus-stop)
-- [ ] dashboard: optional alert `onbeforeunload` while upload is in progress, safeguarding from accidentaly navigating away from a page with an ongoing upload
-- [ ] transloadit: add error reporting, see https://github.com/transloadit/jquery-sdk/blob/891e99b08dd8142d8d8adc0553e6511967635ad7/js/lib/Modal.js#L122-L136 (@goto-bus-stop, @arturi)
-- [ ] server: bump minor and deprecate that on npm in favour of @uppy/companion (@ifedapoolarewaju)
-- [ ] companion: rename `serverUrl` and `serverPattern` to `companionUrl` and `companionAllowedHosts` (@ifedapoolarewaju)
-- [ ] show thumbnails when connecting with Google Drive #1162
+- @uppy/robodog: 📣⚠️Add Robodog — Transloadit browser SDK (#1135 / @goto-bus-stop)
+- @uppy/core: Set response in Core rather than in upload plugins (#1138 / @arturi)
+- @uppy/core: Don’t emit a complete event if an upload has been canceled (#1271 / @arturi)
+- @uppy/companion: Support redis option (auth_pass, etc...) (#1215 / @tranvansang)
+- @uppy/companion: sanitize text before adding to html (f77a102 / @ifedapoolarewaju)
+- @uppy/dashboard: Update pause-resume-cancel icons (#1241 / @arturi, @nqst)
+- @uppy/dashboard: Fix issues with multiple modals (#1258 / @goto-bus-stop, @arturi)
+- @uppy/dashboard: Dashboard ui fixes: fix icon animation jiggling, inherit font, allow overriding outline, fix breadcrumbs, bug with x button being stuck, fix an issue with long note margin on mobile (#1279 / @arturi)
+- @uppy/provider-views: update instagram nextPagePath after every fetch (25e31e5 / @ifedapoolarewaju)
+- @uppy/react: Allow changing instance in `uppy` prop (#1247 / @goto-bus-stop)
+- @uppy/react: Typescript: Make DashboardModal.target prop optional (#1254 / @mattes3)
+- @uppy/aws-s3: Use user provided filename / type for uploaded object, fixes #1238 (#1257 / @goto-bus-stop)
+- @uppy/tus: Update to tus-js-client@1.6.0 with React Native support (#1250 / @arturi)
+- build: Improve dev npm script: Use Parcel for bundled example, re-build lib automatically, don’t open browser and no ghosts mode, start companion when developing (but there’s optional npm run dev:no-companion) (#1280 / @arturi)
## 0.29.1
@@ -228,7 +296,7 @@ What we need to do to release Uppy 1.0
- @uppy/core: bring back i18n locale packs (#1114 / @goto-bus-stop, @arturi)
- @uppy/companion: option validation (can use https://npm.im/ajv + JSON schema)
- @uppy/companion: Remove duplicate typescript dependency (#1119 / @goto-bus-stop)
-- @uppy/companion: ⚠️ **breaking** Migrate provider adapter to Companion: saves 5KB on the frontend, all heavy lifting moved to the server side (#1093 / @ifedapoolarewaju)
+- @uppy/companion: ⚠️ **breaking** Migrate provider adapter to Companion: saves 5KB on the frontend, all heavy lifting moved to the server side (#1093 / @ifedapoolarewaju)
- @uppy/core: single-use Uppy instance: adds an `allowMultipleUploads` option to @uppy/core. If set to false, uppy.upload() can only be called once. Afterward, no new files can be added and no new uploads can be started. This is intended to serve the `