- Increased robustness and backward compatibility or
ghub--tokenandghub--username.
- Fixed username lookup to work as documented.
- Loading
ghubno longer loadsghub-legacyand the functions defined in the latter are now declared obsolete. a81e83c - Callbacks and errorbacks no longer have to accept four mandatory arguments, they can also just accept one. 42ebf09
- The debugger no longer falsely assumes all GraphQL queries come with a payload/variables. f1cd5be
- GraphQL errors can now be ignored, which allows processing the data received for the subqueries that succeeded. 3866c82
- Thoughts and whitespace.
- Various build improvements.
- Thoughts and whitespace.
- Fixed two token cache invalidation failures. #180
- Added new GraphQL query function
ghub-query, replacingghub--graphql-vacuum,ghub-graphqlandghub--graphql(which for the time being are still provided by the newghub-legacylibrary), andghub--graphql-synchronous(which was removed). 9790607, 3a3d209, 508e763 - Deprecated
ghub-fetch-repository,ghub-fetch-repository-discussion,ghub-fetch-repository-issue,ghub-fetch-repository-pullreqandghub-fetch-repository-review-threads. For the time being these functions are still defined in the newghub-legacylibrary, but a future release will remove that. Such high-level and opinionated (i.e., optimized for the Forge package) functions are now considered to be beyond the scope of this package. d9d6559 - Removed the libraries
buck,glab,gogsandgtea, defining the functions{buck,glab,gogs,gtea}-{VERB,repository-id}. For now these libraries are available as new, transitional packagesbuck,glab,gogsandgtea. I recommend you stop using these wrapper functions and instead use(ghub-VERB ... :forge FORGE), where FORGE is one ofbitbucket,gitlab,gogsandgitea. - Added very rudimentary support for Forgejo. #177
- Fixed and improved host and username lookup. 6997e47
- Fixed bugs in getting the value of Git variables. d0576a1
- It’s now possible to wrap
ghub--read-json-payloadto depart from how it encodes json by default. #172
- Fixed following paging links for Forgejo. #170
- Deprecated
{buck,gogs,gtea}-{VERB}functions.
- Use the built-in native JSON support added in Emacs 30. In Emacs
29 the built-in support used the jansson library, but only if it
was built with
--with-json. We already required Emacs 29 before, now we require “Emacs 29 with--with-json, or Emacs 30”. Support for the oldjson.elinterface is dropped.Decoding should work as before. When it comes to encoding we inherit a backward incompatible change. Lists, or more accurately “JSON arrays”, now have to be specified using Lisp vectors, not Lisp lists. #168
ghub-fetch-repositorynow also fetches discussions and discussion categories. 26d5da1, a57baff- Display more debugging information; some of it only if
ghub-debugis non-nil.
Thoughts and whitespace.
- Added new variable
ghub-graphql-message-progress. magit/forge#633
Bug fix:
- When
ghub--tokendoes not find a token forhost/path, it now falls back tohost. See magit/forge#720.
- At least Emacs 29.1 is required now.
Bug fix:
- Revert timeout changes from previous two releases. Url.el is such a pain. See magit/forge#709.
Bug fix:
- Fix the timeout handling from the previous release.
- Updated tooling.
Bug fix:
- Timeouts are now handled properly. 03d7161
- When calling the callback for a REST request, the same buffer which was current when the request was made, is now temporarily made current. 2061136
- When calling the callback or errorback for a GraphQL request, the same buffer which was current when the request was made, is now temporarily made current. 2241135
- The default value of
ghub-graphql-items-per-requesthad to be halved. We use deeply nested requests and Github’s default (and suggested) limit of 100, often leads to timeouts on the server side. b3dd176 - It is now possible to specify how many items to fetch for a specific
GraphQL edge using
:edges INTEGER. e6af790 - Added new
paginateargument toghub--graphql-vacuumand all its public callers (such asghub-fetch-repository). 337b884, b9c1600 - Taught
ghub--graphql-vacuumto respectsforge.graphqlItemLimit. 11c31d1 - Added support for synchronous GraphQL queries, using the new
ghub--graphql-synchronousfunction. a61da16 - Since there are now multiple ways to paginate results, make sure that the smallest value is used. ce7adcd
- Setting the new
ghub--graphql-debugvariable causes debug information to be inserted into the*gsexp-encode*buffer. 87321cd ghub-fetch-repositorynow also fetches theidofcomments, thestateReasonofissues, andisReadByViewerofissuesandpullRequests78a370f, 636a463, 13f3627, c59de91
Bug fixes:
- 0d7c81e ghub-response-link-relations: Fix for GitLab
- 2dc1cee ghub-graphql-error: Define missing error type
- 3647748 ghub–retrieve: Better error if buffer is nil
- Queries can now be passed to
ghub-graphqlin the gsexp format. f3a2654 ghub-fetch-repositoryfetches more information about Issues and PullRequests. fb9d33b 2c6671e- Gsexp now supports naming queries. 2c5ba23
- Added support for GitLab’s GraphQL API. 0e61c0b
ghub--graphql-vacuumcan now make synchronous requests. 142b0db- Added variable
ghub-graphql-items-per-request. 6a5de97
Bug fixes:
- 8c4d0ba ghub–encode-payload: Drop invalid arguments to json-serialize
- 0946102 ghub–url-encode-params: Handle lisp booleans
- 5eed205 Add kludge for debbugs#54989 and rework kludge for debbugs#34341
- 7beed8c ghub–graphql-vacuum: Fall back to pretty-printing response
Also contains various documentation updates, code clean-ups and build improvements.
- When encoding payloads, explicitly specify how to encode certain Lisp values in JSON.
- Define
ghub--authas a generic function. - Also included are several other improvements, updated documentation and bugfixes.
- The experimental and unfinished support for the native json backend must not be used. It was merged prematurely.
- Add new
sparseargument toghub-fetch-repository, making it possible to fetch only information about the repository itself, excluding data such as issues and pull-requests.
- If the username isn’t set and the user decides to set it locally, then that resulted in an error. #124
- Add new function
ghub-fetch-review-threadsand makeghub-fetch-respositoryfetchbaseRefOidandheadRefOid. #110 - Add new
headersargument toghub-fetch-repository,ghub-fetch-issueandghub-fetch-pullreq. #110
- Add new
headerskeyword argument toghub-graphql.
- Add a kludge to work around a bug in Emacs that causes it to not respond correctly to http codes 401 and 409, causing the user to be asked for their username, which makes it very hard to debug the actual issue that caused to reject the provided information. forge/293
- Limit the kludge from v3.3.0 to Emacs releases that are affected. It was fixed in Emacs 27.1.
- Make sure base64 encoded credentials do not contain any newline characters. #118
- Fix a regression introduced in v3.4.0.
- Remove the token setup wizard because (a) it only ever supported Github, (b) Github is about to remove support for that on their end, (c) it did not always work, and (d) when it couldn’t be used, or failed, then it made things more complicated. #113
- Various minor fixes and improvements.
- Add a kludge to work around a bug in Emacs versions before 26.3 that
often but not always causes network connections to fail when using
TLS1.3. On macOS use the workaround regardless of the Emacs version
because the supposed bug fix does not appear to work there. Add a
variable
ghub-use-workaround-for-emacs-bugto allow users to opt in or out of using the kludge. #81 - Add a new library
gsexp.elto encode S-expressions as GraphQl documents. Previously we used the third-party librarygraphql.elbut using our own library gives us more flexibility. Currently it is rather incomplete and only intended for use byghub-graphqlbut I might fill the gaps and add documentation eventually. I am not in a hurry though. #90 - No longer depend on
dash. - Handle some undocumented Bitbucket behavior. #97
- Add new option
ghub-insecure-hoststo allow users to connect to insecure forges. #9 - Support Github instances that use an undocumented url-schema, which users report to have sighted in the wild.
ghub-fetch-repositorynow also fetchesreviewRequests.- Various bug fixes and improvements.
- 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-idabout subgroups.
- 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-idfails. ghub-fetch-repositoryfetches a few more fields.
- Add support for Gitea, Gogs and Bitbucket.
ghub.elsupports these forges directly, but also add new librariesgtea.el,gogs.elandbuck.el, which provide convenience wrappers just like the existingglab.el. #67 - No longer split the repository into multiple Melpa packages.
I.e. the
glab.ellibrary is now part of theghubpackage. - Add support for automatic GraphQL unpagination. #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-vacuumprovides 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-repositoryfetches information about a repository. If also serves as an example for how to useghub--graphql-vacuum.The initial queries used by
ghub-fetch-issueandghub-fetch-pullreqare pre-narrowed variants of the initial query ofghub-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-messagetonilso 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-sourcefrom retrieving saved secrets. #64 - Deal with a chicken and egg problem concerning 2fa. #65
- Add new
ghub-clear-cachescommand because if things go wonky it is nice to know it isn’t the cache. - Add new
ghub-repository-idfunction. 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-limitfunction.
(For this an earlier releases only the most important changes are mentioned.)
- Various bug fixes.
- Support two-factor authentication.
- Support asynchronous requests.
- Support GraphQL.
- Support Gitlab.
- Support basic authentication.
- Fix various encoding issues.
- Support unauthenticated requests.
- Support Github Enterprise instances.
- Bind
json-falsetonilinstead of:json-false.
- First release.