Skip to content

Releases: tus/tusd

v1.0.1

29 Sep 18:32
Compare
Choose a tag to compare

This patch release fixes a problem where data from a PATCH request would not not be stored if the request is aborted.

v1.0.0

20 Sep 14:53
7fd41f1
Compare
Choose a tag to compare

Release notes

This release cleans up many internal design flaws and inconsistencies while also adding some new features, explaining the high number of breaking changes. However, tusd's tus HTTP interface remains unchanged and tus 1.0 is still as supported as before. No updates to your tus clients should be necessary if they worked before.

For the precompiled tusd binary, which can be downloaded for every release, following important changes have been made:

  • [BREAKING] The -dir flag has been renamed to -upload-dir to emphasize that it defines where the uploads are getting stored on disk.
  • [BREAKING] The -store-size flag, which attempted to limit how much space would be used for uploads, has been removed without a replacement. Please see the discussion for the limitedstore package below for reasons.
  • [BREAKING] When using disk store, the completed uploads are not getting stored with the .bin suffix anymore. So if your completed upload was available at ./data/[ID].bin, it will now be stored at ./data/[ID] without a file extension. This decision has been made to unify the behavior of the disk, S3 and GCS storage.
  • [BREAKING] The upload information, which was previously available as the root object of the JSON payload for the file and HTTP hooks, has been moved to the Upload property. So while the payload previously looked like { "ID": "foo", ... }, it will now be { "Upload": { "ID": "foo", ... }, ... }.
  • The JSON payload for the file and HTTP hooks has gained the new Upload.Storage property. It contains details about where an upload is stored, for example its absolute file path or S3 object name. Please see https://github.com/tus/tusd/blob/master/docs/hooks.md for more details.
  • The JSON payload for the file and HTTP hooks has gained the new HTTPRequest property. It contains details about the HTTP request which caused this hook to be fired, for example the entire HTTP headers. Please see https://github.com/tus/tusd/blob/master/docs/hooks.md for more details.
  • The versions from now on will be prefixed with a v. So while it was previously 0.13.3, it will now be v1.2.3, for example.
  • New uploads are now accept at the basepath with and without a trailing slash (e.g. http://localhost:1080/files/ and http://localhost:1080/files). A missing trailing slash was an easy newcomer mistake. This change should be it simpler for beginner to get started.

The github.com/tus/tusd package has seen following changes:

  • [BREAKING] The package import paths have been changed to be under the github.com/tus/tusd/pkg/ prefix. The github.com/tus/tusd package is now available as github.com/tus/tusd/pkg/handler. All other packages, such as github.com/tus/tusd/filestore are now available as github.com/tus/tusd/pkg/filestore.
  • [BREAKING] Support for older Go versions has been dropped. Only Go 1.12 and Go 1.13 are supported by this release. In the future only the two latest major versions of Go will be supported.
  • [BREAKING] The github.com/tus/tusd/consullocker package, which provided a locking mechanism using the Consul services, has been removed due to low usage and higher maintenance costs.
  • [BREAKING] The github.com/tus/tusd/etcd3locker package, which provides a locking mechanism using the etcd3 server, has been move to the repository https://github.com/tus/tusd-etcd3-locker to simplify the test and CI setup for tusd.
  • [BREAKING] The github.com/tus/tusd/limitedstore package attempted to limit the used space of all uploads. However, its design was flawed from the beginning as its internal state was not saved between server restarts, causing it to leak uploads. Therefore, and because of its low usage numbers, we decided to remove this package.
  • [BREAKING] The github.com/tus/tusd.Config.DataStore option has been removed. Its successor StoreComposer should be used instead.
  • [BREAKING] The notifications channels inside github.com/tus/tusd/pkg/handler.UnroutedHandler (for example, CompleteUploads) now send HookEvent instead of FileInfo. The new struct also contains details about the HTTP request which caused the notification to be fired.
  • [BREAKING] The interfaces around github.com/tus/tusd.DataStore have been redesigned in two ways:
    1. Most operations now also accept a context.Context object for receiving HTTP request cancellation events.
    2. The upload operations (e.g. retrieving information and writing chunks) now operate on an Upload object instead of the upload ID, allowing data to be cached in between function calls.
  • The dependencies are now handled using Go modules and specified in go.mod and go.sum. This allows you to simply add tusd as a dependency for your project.
  • The github.com/tus/tusd/pkg/handler.Config.PreUploadCreateCallback has been added which gets invoked before an upload is created. It can be used validate an upload's metadata with the ability to reject invalid uploads.

v1.0.0-pre2

20 Sep 09:18
Compare
Choose a tag to compare
v1.0.0-pre2 Pre-release
Pre-release
ci: Remove leading 'v' from version for Debian packages

0.14.0

20 Sep 14:45
Compare
Choose a tag to compare

This minor release contains two changes:

  • Add the hooks-enabled-events option to allow whitelisting hook events (#302)
  • Correct a bug where files certain MIME types would not be properly downloaded.

0.13.3

13 Aug 08:54
Compare
Choose a tag to compare

This patch release contains two changes:

  • S3Store: Fix a bug where temporary files would not be properly cleaned up (#299)
  • Cli: Add the -verbose flag to allow reducing logging volume

0.13.2

21 Jul 20:43
Compare
Choose a tag to compare

This patch release contains two minor fixes:

  • Remove TCP details from the error message about connections being reset, so they can be counted properly in the metrics.
  • Remove newlines from metadata when using S3, otherwise an error about invalid headers will be returned.

0.13.1

24 Jun 18:21
Compare
Choose a tag to compare

This patch release contains a few patch to fix the building process for the Docker image (see #281, #282, #284 and #286). Many thanks to @thirsch for their work on these improvements!

0.13.0

10 Jun 09:50
Compare
Choose a tag to compare

This minor release contains following additional features:

  • gcsstore: Add option to configure object prefix (#275)
  • core: Add timestamp for logs to tusd output (#276)
  • cli: Add option to load hook function from Go plugin

0.12.0

26 May 20:43
Compare
Choose a tag to compare

This minor release contains following new features:

  • Add support for creation-defer-length for S3Store (#219, #228 and #233)
  • Allow setting tusd's HTTP response code from HTTP hooks (#236)
  • Add support for binding tusd to UNIX sockets (#265)

It also contains following bug fixes:

  • Do not ignore errors when writing an object to Google Cloud Storage
  • Reclaim space from deleted uploads in limitedstore

0.11.0

19 Nov 16:40
Compare
Choose a tag to compare

This minor release contains some helpful feature additions:

  • Add support for upload length deferring (#182)
  • Allow sourcing AWS credentials from configuration files, such as ~/.aws
  • Add upload locker using Etcd3 (#202)
  • Add option to specify prefixes for uploads on AWS S3 (#213)

Furthermore, following bugs have been fixed:

  • Fix displaying SVGs inline in browsers
  • Fix emitting post-finish event for empty uploads directly after they are created
  • Fix Not Found Errors when using Google Cloud Storage
  • Fix an error when calculating the upload offset when using Google Cloud Storage
  • Fix executing file hooks on Windows