# -*- mode: org -*-

* v3.2.0    2018-12-27

- Work around bug in Emacs versions before 26.1 that prevented newly
  created tokens from being used without the user invalidating
  ~auth-source~'s cache first.

- Teach ~glab-repository-id~ about subgroups.

* v3.1.0    2018-12-20

- Support GraphQL aliases.

- Show number of GraphQL page currently being fetched in mode-line.

- Add a default errorback for asynchronous REST requests, which shows
  the same information as would be shown for a failed synchronous
  request.

- Signal an error if ~ghub-repository-id~ fails.

- ~ghub-fetch-repository~ fetches a few more fields.

* v3.0.0    2018-10-31

- Add support for Gitea, Gogs and Bitbucket.  ~ghub.el~ supports these
  forges directly, but also add new libraries ~gtea.el~, ~gogs.el~ and
  ~buck.el~, which provide convenience wrappers just like the existing
  ~glab.el~.  [[https://github.com/tarsius/ghub/issues/67][#67]]

- No longer split the repository into multiple Melpa packages.
  I.e. the ~glab.el~ library is now part of the ~ghub~ package.

- Add support for automatic GraphQL unpagination.  [[https://github.com/tarsius/ghub/issues/68][#68]]

  GraphQL was designed around the idea that you should be able to "ask
  for what you need and get exactly that".  Unfortunately this does not
  cover the "look, if I persist, then you are going to hand me over all
  the data anyway, so just cough it up already", which is what Forge
  needs.

  ~ghub--graphql-vacuum~ provides a way to unpaginate all cursors in the
  returned data without having to write a lot of boilerplate.  Callers
  have to provide the query as an s-expression that corresponds to the
  root request.  The queries needed to follow cursors in arbitrary
  locations within the returned data, are automatically derived from
  that query.

  ~ghub-fetch-repository~ fetches information about a repository.
  If also serves as an example for how to use ~ghub--graphql-vacuum~.

  The initial queries used by ~ghub-fetch-issue~ and
  ~ghub-fetch-pullreq~ are pre-narrowed variants of the initial query of
  ~ghub-fetch-repository~.  Pre-narrowing is somewhat similar to the use
  of fragments, but unlike that, it doesn't result in lots of duplicated
  boilerplate and/or lots of variables.

  There is very little documentation and everything is still very much
  subject to change.

- Bind ~url-show-message~ to ~nil~ so that the more useful messages
  displayed by the callers of this package are visible to the user
  instead of the less useful "Contacting host: api.github.com:443".

- Sometimes Github returns an HTML document instead of the promised
  JSON when an error occurs.  Try harder to extract some meaningful
  information from that document.

- Work around a bug in older Emacsen that prevented ~auth-source~ from
  retrieving saved secrets.  [[https://github.com/tarsius/ghub/issues/64][#64]]

- Deal with a chicken and egg problem concerning 2fa.  [[https://github.com/tarsius/ghub/issues/65][#65]]

- Add new ~ghub-clear-caches~ command because if things go wonky it is
  nice to know it isn't the cache.

- Add new ~ghub-repository-id~ function.  This function works for all
  supported forges and always returns a string, even for less
  successful forges that can still get away with using integers as ids.

- Add new ~ghub-graphql-rate-limit~ function.

* v2.0.1    2018-04-19

(For this an earlier releases only the most important changes are
mentioned.)

- Various bug fixes.

* v2.0.0    2018-03-20

- Support two-factor authentication.

- Support asynchronous requests.

- Support GraphQL.

- Support Gitlab.

* v1.3.0    2017-11-30

- Support basic authentication.

- Fix various encoding issues.

* v1.2.0    2017-04-26

- Support unauthenticated requests.

- Support Github Enterprise instances.

* v1.1.0    2016-08-07

- Bind ~json-false~ to ~nil~ instead of ~:json-false~.

* v1.0.0    2016-04-20

- First release.
