More than 800 commits and a long long time after, git-bug v0.8.0
is now available.
Once again, this release represent a push towards making git-bug generally useful and correct. The two main improvements are a new Entity framework and write-capable WebUI.
Introduced in this version, the code handling the data model and conflict resolution has been improved to support fully p2p sharing model, and generalized into an easily reusable framework Documentation 1, Documentation 2. This is a huge step forward as it means writing new entities (configuration, pull-request, board ...) becomes nearly as simple as for a CRUD application.
This entity framework makes it easy to extend git-bug, but also to use it as a library to create brand new applications using the same techniques as git-bug.
Additionally, the underlying data model has been improved and fix earlier shortcoming. Notably, operations can now be represented in a DAG with concurrent editions across machines while still supporting proper merge conflict, instead of the enforced linear structure as before. Before, things were working OK with a star topology of git remotes (that is, a central repository) but would break down with anything more complicated. No more! The new data model also becomes fully immutable (aka append-only), which is much more conductive with cryptographic signatures and encryption.
Breaking changes
- changes in the data model makes it a requirement to use the migration tool to to update any previous repo.
- remove the legacy identities that were directly embedded in bugs
Core
- introduce a reusable
entity
package capable of handling all the complex operations of anEntity
(bug, board, config ...): operations, DAG manipulation, conflict merge, signature, integrity ... to greatly simplify writing and maintaining an entity. Documentation 1, Documentation 2 - introduce
CombinedId
, a new kind of identifier for an item within anEntity
(for example a comment in a bug), that hold two partial identifiers interleaved for fast addressing. Documentation - introduce the concept of resolvers, so that entities can link to another
- use
go-git
to manipulate the git repository, instead of executing the localgit
binary - add support for signing the git commit with the author's signature, and verifying
- add support for git config includes by @mindriot101
- rework of the
Repository
layer for modularity, simplicity and testing, allowing more easily to plug an alternative storage - support for full text search in bug comments
- support application namespace in the repository so that other app can use the entity package as a framework by @smoyer64
Commands
- auto-completion of bug identifier, bridge names, credentials, labels, remote, identity and flags 🎉 by @krobelus
- complete refactoring to avoid global variables and be more conductive to testing
- new command
comment edit
to edit a bug's comment - new command
rm
to remove a bug by @vincetiu8 ls
andshow
learned different output format with--format=<format>
, with format being one ofdefault
,plain
,json
,compact
andorg-mode
by @vincetiu8 and @karlicoss- allow
user create
without interactive prompt by @cvhariharan
Query language
- support filtering on bugs having no labels
- support filtering on metadata by @vmiklos
Bug
- complete rework using the new
entity
framework
Cache
- introduce a LRU to have a limit of entities loaded in memory and effectively cap the memory usage of long running processes by @vincetiu8
- proper locking for concurrent access by @vincetiu8
Bridges
- core: support for remote bug tracker rate limiting by @rng-dynamics
- core: support to indicate that the configuration wizard is executed non-interactively and should have all the required parameters set by @GlancingMind
- Github: revamped client and iterator with proper rate limiting handling by @rng-dynamics
- Github: revamped credentials creation following Github removing the previous API by @rng-dynamics
- Github: support new token format by @ellsclytn
- Github: extended tests by @rng-dynamics
- Github: fix push then pull creating duplicates by @rng-dynamics
- Gitlab: revamped client to use the much better
event
API to replace thenote
API that was hard to use and caused a lot of problems and headaches by @5nord - Gitlab: fix access token settings by @remram44
- Gitlab: cleanup titles on import by @vincetiu8
- Gitlab: support new token format by @gaelj
- Jira: fix incorrect client creation reusing the same credential
API
- new HTTP handler to access files stored in git
- new HTTP handler to upload a file to git
GraphQL
- strong typing for identifiers
- prepare for external authentication
- introduce
addCommentAndClose
andaddCommentAndReopen
mutations, to comment and change a bug state in a single atomic operation by @GlancingMind - introduce
editComment
mutation to edit comments
TermUI
- fix a crash when trying to open a bug when there are none by @vojta001
- properly trim spaces in titles by @wavexx
- make the help visually easier to parse
- denser bug list view by @wavexx
- fixed readability on bright terminal by @zdenek-crha
WebUI
- now report GraphQL errors in the console when
--log-errors
is used - large refactoring to bring good practice and simplify future work by @sandhose
- add support for read-only mode by @lukegb and @claudioantonio
- support for creating bugs by @claudioantonio
- support for closing and reopening bugs by @claudioantonio
- allow to specify the host address when launching with
--host=<host>
for easier hosting, in particular in container by @GlancingMind - allow specifying the initial query with
--query
by @vmiklos - dark mode by @GlancingMind
- show count of comment on each bug in the list by @GlancingMind
- improved navigation by @GlancingMind
- comment edition and show edit history by @GlancingMind
- bug list filtering by @GlancingMind
- add user profile by @GlancingMind
- show placeholder for empty comment preview by @GlancingMind
🚀 ☀️
New Contributors
- @mindriot101 made their first contribution in #371
- @vojta001 made their first contribution in #378
- @ogirginc made their first contribution in #380
- @westurner made their first contribution in #382
- @lcook made their first contribution in #388
- @tbm made their first contribution in #404
- @vincetiu8 made their first contribution in #403
- @lukegb made their first contribution in #407
- @karlicoss made their first contribution in #425
- @wavexx made their first contribution in #427
- @zdenek-crha made their first contribution in #457
- @6543 made their first contribution in #471
- @xloem made their first contribution in #490
- @rng-dynamics made their first contribution in #496
- @kenrestivo made their first contribution in #502
- @claudioantonio made their first contribution in #538
- @5nord made their first contribution in #556
- @vmiklos made their first contribution in #568
- @GlancingMind made their first contribution in #588
- @ellsclytn made their first contribution in #636
- @cvhariharan made their first contribution in #650
- @sitiom made their first contribution in #716
- @remram44 made their first contribution in #715
- @gaelj made their first contribution in #773
- @krobelus made their first contribution in #531
- @smoyer64 made their first contribution in #808
Full Changelog: 0.7.1...v0.8.0