megatools 1.11.0 - 2022-05-19
=============================

This release introduces new features.

Improvements:

- Megatools now install a single `megatools` executable, where former
  `megaXYZ ...` commands now have to be executed as `megatools XYZ ...`.
- Implemented PKP (public key pinning for mega.nz's API server). Megatools
  no longer use public certificate authorities to verify API server's
  authenticity. If you use software that MITM's your web traffic, megatools
  will not allow this anymore.
- Windows builds no longer need any special console setup to support UTF-8.
  It just works out of the box.
- Support new public folder URLs in `dl`
- Build system moved to meson
- New `test` command for checking if file exists
- New `export` command for creating public links for private files
- Login v2 support
- Upload reliability improvements

Commit list:

9294db2 Improve support for UTF-8 on windows
82833a2 Use g_memdup2
4adc57f Try disabling TLS session ID cache (may fix #462)
3f59e27 add support for newstyle folders
8b759a3 Cleanup the dl range code
e299c43 Add range selection to the downloader
539ff6f Return status = 2 if uploaded file already exists
c0bd7ef Add file exists error type
8d91a61 Fix NULL pointer dereference when invoking megatools in some situations
57cddce Bump cache format version
1737c55 Cleanup login v2 support and fix session caching
bf886a4 Add contributed support for v2 login flow
e4e8495 dl: Support new link format for individual files inside folders
fe6d818 dl: Add support for new link formats
8296db8 Update README with new build information/git repository link
471a3cf Make doc generator programs optional
9e47ad4 Move to meson buildystem
eae38e9 Drop github issue template
a9af5d8 Update PGP fingerprint
1f52c9c We need to follow symlinks on local paths in megatools dl
8bbc21c Mark some functions as static
32bd83a Change e-mail/website addresses
2d9fe44 URL-decode links passed to the dl command #310
cc91968 Add --ip-proto and --netif options
f19cf39 Add export tool
d3e1d58 Add megatools test tool
f0bfefd Drop useless ;
7735dd2 Fix grammar: data are -> data is
99dfea8 Avoid new compiler warnings
2c7e2a3 No need to iterate from the beginning when checking for invalid filename
4e5ba97 Replace invalid filename characters with _ instead of a space
1aeb275 Merge branch 'master' of github.com:megous/megatools
956c11a Don't use alloca, avoid unbounded path construction
c94277f Merge pull request #428 from 64617/fix-filename
c91409c Don't immediately fail on invalid filename
2cc7019 Fixes: 'megatools get', Output to STDOUT not working #423
1012d6e Updated todo
0faba1c Fix megatools rm not removing the child nodes from the fs_nodes
65f8afd Don't free nodes too early #417
a1c945c dl: Download exported files even if root is not a folder #417
2ca921f Merge branch 'master' into x
f651ba0 Revert "Support ....?.... URL scheme for single file downloads"
d52d0ce Refactor update_pathmap_prune to make it clearer, fix memleaks
7f2dcae Merge pull request #417 from mdirik/file-url
c78d0d6 Support ....?.... URL scheme for single file downloads
8758b65 Sort order of downloads #401
8309767 Merge pull request #414 from taiyu-len/master
978e4be Show file sizes in pick_nodes
28a2fbe Drop libmega mentions #412
1ea525e Fix download speed limit not being applied by curl if handle is re-used #380
2b68a46 Fix implicitly declared function warnings in shell.c #406
3c24b71 Add link for the experimental windows builds
f218192 Optimize exported folder filesystem parsing #405
0e21e38 Fix megac doc
b04961d Fix parameter type to curl_easy_setopt
ac07641 Fix for "Hardcoded colors affects readability" #404
2255c5d Allow more retries during download (when over quota) #403
0346e76 Add git warning/build instructions to autogen.sh
548042e Add gc_tool_fini attribute
653ba6c Fix alignment of exported links
26a7a0d Add docbook-xml dependency #391
3459d1f Update issue template
1a7e3f4 Update README file for 1.11.0
70c624e Don't download data when file already exists when using megadl #386
5acf268 Add -std=c99 compiler flag
a6df742 Always retry the upload, on any server returned error
80e9767 Drop special handling of EAGAIN
7827235 Report possibly transient failures from curl as HTTP_ERROR_COMM_FAILURE
9c150b3 Bump version to 1.11.0-git
3637555 Drop AC_PROG_RANLIB (libtool is enough)
f6dcdf5 Don't be too silent
095d284 Fix contact information
d2c5c38 Improve build instructions #384
b304d5c Use libtool to fix static linking
d7b9037 Drop option groups
a4f638e Fix a couple of typos
b95ac5d Updated NEWS/TODO
63771cd Drop dead autoconf code
4437c0c Update megatools docs for the new command naming scheme
852852b Add option to install compat links
6cbd650 Build a single binary instead of a binary for each command
6736622 Drop accent
7ac9569 Bump the year
ff0f5f1 We don't use gnutls/glib-networking anymore, drop unnecessary code
07ba1f9 Implement public key pinning for the API server


megatools 1.10.2 - 2018-07-31
=============================

This is a bugfix release. This release was sponsored by donations to fix
large file downloads and improve download robustness after recent mega.nz
API change. Thank you!

Fixes:
- Actually fix connection dropping when downloading big files

Improvements:
- Add DNS resolution cache sharing accross all cURL handles
- Increase receive buffer size to 256kB

megatools 1.10.1 - 2018-07-27
=============================

This is a bugfix release + one feature addition by del1a.

New features:
- Allow to interactively choose which files to download from a public folder via
  megadl --choose-files

Fixes:
- Connection dropping when downloading big files
- Compatibility with older libcurl releases
- Fix occasional crashes when starting transfer worker threads
- Fix clang compatibility

megatools 1.10.0 - 2018-07-22
=============================

This release contains new features and optimizaions.

New features/optimizations:
- Chunked upload using up to 16 concurrent connections. Remember, more is not
  always better.
- Improved upload stability. When mega drops or hangs the data connection,
  megatools will simply restart the upload of the chunk of data that got lost.
- 5x AES enryption/decryption speed increase for uploads and downloads. Now
  it's possible to max out a gigabit connection on a cheap Intel based VPS.
- Improved progress reporting wih a summary of the average speed at the end.
- You can use --debug http to see all HTTP requests and connections, for
  debugging connection isues.
- Error 509 is reported with explanation.
- Implemented automatic resume for interrupted downloads. Megatools now
  writes data to a temporary file and renames it to the target name, when the
  download is fully completed. This way you'll notice that download was
  interrupted by CTRL+C and megatools will not leave half finished work behind.
- Add contributed bash auto-completion file by albaldi #368
- Add support for authenticated downloads of exported files using megadl #298
  (So that your account download quota is used instead of public quota.)
- Add Upload section and CreatePreviews setting into rc file. Add --enable-previews
  option.
- Add support for megals --print0|-0

Fixes:
- Upload hangs at 100% #366 #360 #365
- Don't send tetrminal escape sequences, when redirecting stdout.
- Fix comments syntax in megarc man page #359
- Use glib's variants of PRIu64, fixes #328
- megadl doesn't use account session when downloading folder links #304
- Skip symlinked folders when uploading in megacopy #262
- Turn on TCP keepalive probes in CURL #271
- Fix socks proxy support in megareg (it was not enabled correctly) #287
- Fix OpenSSL 1.1 compatibility #263
- Fix compiling against libressl
- Fix b64_aes128_cbc_encrypt_str string length handling #242
- Minor docummentation updates/fixes

Credits:
- Thanks to ERap320, megatools is also available on Chocolatey (see gihub issue
  #347) (If you want to verify origin of the binaries, because they are not
  distributed in the officialy signed zip file)
- Thanks to christarazi, megatools supports downloading specific sub-nodes of
  a public folder. (#254)

Thanks also go to all other contributors for improving documentation, reporting
bugs and testing.

megatools 1.9.98 - 2016-11-03
=============================

Bugfix release with some UI imporvements.

New features:
- Support upload/download speed limit settings
- Support socks proxy
- Improved progress reporting
- Support for OpenSSL 1.1.x

Removals:
- Remove undocummented --abort-on-error option. Tools now always
  report errors through exit status.
- Remove libmega.so public library support and a lot of unused code
  that was planned to be used for 2.0
- Remove megamv (it was never implemented and confused users)
- Remove megafs (it was just an experiment and confused users)

Cleanups:
- Cleanup build system a bit
- Cleanup CLI option handling, improved --help output

Fixes:
- Enable automatic decompression (CURLOPT_ACCEPT_ENCODING) (by protomouse)
  (This finally fixes the problem with HTTP compression.)
- Exit status from all the tools is now correctly reported
- Fix syncing of symlinked files
- Support very long passwords in the password prompt (up to 1024 chars)

megatools 1.9.97 - 2016-02-02
=============================

Bugfix release.

Fixes:
- Mega started compressing HTTP responses to API calls. Megatools now
  uses libcurl to handle API requests, so HTTP compression is now 
  supproted.

megatools 1.9.96 - 2016-01-02
=============================

Bugfix release.

Fixes:
- Refer to mega.nz and use mega.nz links instead of deprecated mega.co.nz
- Fix various build issues

megatools 1.9.95 - 2015-04-15
=============================

Bugfix and optimization release.

Fixes:
- Improve compatibility wit older curl (whatever version is in centos 6.5)
- Fix regression in megadl: fails to download exported folders #90
- Remove megamv as it is not and will not be implemented in 1.9 branch
- Slow down progress reporting on windows to once per second #102
- Correct the default values in mega_session_load()

Improvements:
- Rename megasync to megacopy to avoid conflict with official mega sync client
- Optimize session loading - issue #100
- Optimize session loading - further optimization - issue #100
- There's no need to use dbus-launcher when running megatools outside running
  desktop to avoid a warning message.

megatools 1.9.94 - 2015-01-02
=============================

Bugfix and optimization release.

Fixes:
- Force use of IPv4 addresses
- Fix path sanitization so that trailing slashes are ignored
- Document config file oddities in megarc manpage
- Add info on how to build/install megatools on various distros

Improvements:
- Optimize path handling code so that filesystems with many files are 
  usable. Previously, megatools would hang for quite some time when
  updating it's path map.
- Use non-recursive makefile to build megatools

megatools 1.9.93 - 2014-10-24
=============================

Added OpenSSL exemption to the license.

Fixes:

- megadf now returns correct values
- fixed path sanitization in mega_session_stat
- raised safety limit os size of POST responses from 32 to 256 MiB
- show progress when downloading folder using megadl
- optimized buffer allocation during donwload and upload
- report details of errors when stream callback fails to read/write file
- fix detection of convert executeable for preview generation
- allow to disable file previews

megatools 1.9.92 - 2014-08-24
=============================

Created stable branch for bugfixes. This is the release from the stable 
branch.

This release contains mostly small bug fixes. Most important change is
that Megatools now recognizes server busy errors as reported by mega.nz
via HTTP status 500 Server Is Busy, and retries the communication. This
reduces command failures by a lot, and you'll not see 500 Server Is Busy 
errors anymore.

Another major news is update to the windows package. There are now two 
packages for 32bit and 64bit windows platform, and all dlls were updated to
their latest versions.

Other news:

- Added 64bit windows package
- Unmask Megatools to Mega.nz (user Megatools/VERSION User-Agent)
- Check for a2x if --enable-docs-build=yes
- Megadl now reports file download errors
- Add megadl --print-names option
- Fix megasync error (issue #45 on github)
- Fix megadl used with pipe (--path -) on windows (issue #38)
- Installation instructions for Mac
- Add info about Gentoo ebuild to the README file (issue #26)
- Fix Megatools thumbnails for PDF (issue #5)
- Do repeated API calls after 500 Server Is Busy and increase retry delay
- Fix issue to download a file with accent with megaget (issue #22)

megatools 1.9.91 - 2013-04-14
=============================

Please note, that megatools is using GNOME release versioning. That means
that in MAJOR.MINOR.PATCH, odd MINOR number signifies development version
of the tools. PATCH version is increased on each public release.

By using odd MINOR versions of the software you are using an unstable
branch. That doesn't mean it will be crashing on you, but it may have 
certain quirks, and oddities, missing or incomplete features, etc.

Next stable release is going to be 2.0.0.

To the news:

- Added man pages for all tools
- Removed megastream in favor of mega{dl,get} --path -
- Megadf - fix unsigned overflow when server reports 0 total space
- Implemented --debug option
- Win32: Drop requirement for manual setup of GIO_EXTRA_MODULES
- Load certificates from the binaries folder on windows
- Enable CA validation for TLS connections
- Fix compilation on FreeBSD by adding --enable-warnings
- Add note that on FreeBSD GNU make must be used to build the tools
- Fix typedef redefinitions (error on older gcc's)
- Fix megals --names logic
- megaput/megaget/megadl/megasync: --no-progress support
- Fix mega_session_dl streaming mode segfault
- megamkdir/megarm: Check for required arguments
- Pretty print JSON in debug output

AUR package is available at https://aur.archlinux.org/packages/megatools/

Ubunut PPA is availble at https://launchpad.net/~megous/+archive/ppa

If someone wants to take over packaging for Ubuntu or Debian, that would
be very appretiated, as my speciality is Arch Linux.


megatools 1.9.90 - 2013-04-11
=============================

Implemented much simpler and faster json parser than json-glib, which was
used before. Megatools now use sjson, which you can find at:

  https://github.com/megous/sjson

Json-glib dependency was thus dropped.

Initial work on getting rid of dependency on libcurl.

Initial work on the new libmega library with support for gobject-introspection
based bindings to various languages: JavaScript, Python, Ruby, LUA,...

Experimental implementation of Mega API in JavaScript (gjs), this should help
people develop GNOME GUI for Mega in the future.

New command line tools:

  megafs  - mount mega.nz filesystem usong FUSE (Linux only)
  megamv  - move and rename remote files and directories


megatools 1.2.2 - 2013-04-11
============================

Bugs fixed:

- Trash and Inbox paths are no longer mixed up (bug reported by Ovidiu)
- megadl segfault
- megaput --path /Root/nonexistent-file local-file (remote file would get 
  the name of the local file, instead of nonexistent-file)
- megals /Root/file-name would return nothing
- Segfault with password length over 15 chars
- Fix file size parsing to make it work with files over 2GB in size


megatools 1.2.1 - 2013-03-12
============================

Added support for OpenSUSE 12.1 and newer versions.

Build libmega statically for binary distribution to ease installation 
outside of /usr/local.


megatools 1.2.0 - 2013-03-12
============================

Megatools now support download of shared files and folders.

Megatools support creating thumbnails for image and video files uploaded 
to Mega. This is enabled only on Linux, as it requires ffmpegthumbnailer 
and convert (from ImageMagick package).

You can now manage your contacts list via:
  
  - mkdir /Contacts/some@email.com
  - rm /Contacts/some.other@email.com

Exported folders can be downloaded using megadl.

All tools gained a few more options to help with scripting needs.

If you don't provide password on command-line or in config file you'll 
be asked for it when the tool runs.

Megals tool gained many new options.

OpenSSL locks are now properly initialized.


megatools 1.1.1 - 2013-03-10
============================

Binary packages for linux support more Linux distributions. Supported
distros include (both 32bit and 64bit editions):

  - Ubuntu LTS 12.04.2 and later
  - Fedora 17 and later
  - Current Arch Linux
  - Suse (with a package for ubuntu)
  - ...and probably any recent distribution with all dependencies installed

Package structure was changed to allow easy installation to /usr/local.

To install, run:

  sudo tar -x -f megatools-1.1.1-i686.tar.gz -C / --no-overwrite-dir

Tools now use shared library, which you can use to develop your own Mega
tools. For example:

  export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

  gcc -o sample sample.c -Wl,-rpath,/usr/local/lib `pkg-config --cflags --libs libmega`

Sample source code sample.c can be found in /usr/local/share/doc/megatools/

To develop mega apps, you'll need to install development packages on
distros like Fedora or Ubuntu. For example on Fedora:

  yum install openssl-devel json-glib-devel libcurl-devel glib2-devel

Or on Ubuntu:

  apt-get install libssl-dev libjson-glib-dev libcurl4-openssl-dev gcc make pkg-config


megatools 1.1.0 - 2013-03-09
============================

Megareg tool is now implemented, and can be used to register new
accounts without the need for Mega website. Unless you login to
Mega, Mega will never be able to get your password key.

Tools don't show version banner anymore, unless asked for via 
--version option.

Megadl learned to handle SIGPIPE if server drops connection,
and megadl tries to write into a closed socket.


megatools 1.0.0 - 2013-03-08
============================

This is initial public release of megatools. Current features are:

- Local caching of remote session/filesystem information 
  for faster execution. Cache is encrypted with your password 
  key.
- Support for configuration file to put login information in.
  This is not wildly secure, but it's convenient.
- Initial set of tools to manipulate remote filesystem:

  megadf       Show your cloud storage space usage/quota
  megals       List all remote files
  megamkdir    Create remote directory
  megarm       Remove remote file or directory
  megaput      Upload individual files
  megaget      Download individual files
  megadl       Download file from a "public" Mega link
               (doesn't require login)
  megastream   Streaming download of a file
               (can be used to preview videos or music)
  megasync     Upload or download a directory tree

See TODO for features that are comming in the future releases.
