🔃Changelog
Read the changelog every time a new update is released
Last updated
Read the changelog every time a new update is released
Last updated
Change log contains all version updates, old, current and upcoming with all important additions, fixes or improvements. The unchecked items of the work in progress version, are the items remained before this build is released.
This version upgrades MudBlazor library version to the latest one, using the v7.0.0 migration guide which has multiple breaking changes.
This version adds PostgreSQL support. You can now use PostgreSQL instead of SQL Server. Read release 2.15.0 changes for more details on how to configure PostgreSQL.
PostgreSQL guide explains what to do in order to use PostgreSQL as your main database provider.
Harmony is now a public repository available for everyone
This version's goal is to enhance board's operations performance and more specifically loading a board & opening a card's view.
Several caching options (in memory, Redis, distributed, etc..) will be supported using the EasyCaching library.
Also, the dependency in the two stored procedures existing will be removed in order to add an option for PostgreSQL database. This way you will be able to use PostgreSQL instead of SQL Server
Add a powerful work-items page for searching/filtering board's items
Create new work-items page
Filter items by list type (e.g. task, bug, etc..)
Filter items by status (in progress, done, etc..)
Filter items by active sprint (scrum projects only)
Order items by date created, list type, status
Handle Git tag Webhook requests
Display only one active sprint at a time with the option to change selected active sprints
Create new project Harmony.Integrations.SourceControl for handling GitHub webhooks
Handle branch creation webhook
Handle push commits webhook
Handle pull request (created, closed, merged) webhooks
Display card's repository activity on edit card modal
Create detailed card's repository activity view
Add docker & Kubernetes support for the new project created
The following link types will be supported:
is blocked by / blocks
is cloned by / clones
is duplicated by / duplicates
relates to
Open linked issue to new tab
Auto-sync linked cards upon linking/unlinking
Display link icon on board cards
Create Retrospective entity, entity configurations & migrations (breaking)
Create a retrospective for a sprint
View retrospective's board
Add cards to a retrospective card
Edit & archive a retrospective card
Fix card filter specifications that affected several operations
Fix WebSocket re-connection issue on page reload
Fix sprints filtering query
Add support to create and optionally start a new sprint when moving items from backlog
Directly edit subtask story points from parent's issue edit modal view
Edit workspace details
Refactor sprints page
Create new individual sprint page
Position & card movement fixes
This version goal to do use Kubernetes self-healing functionality and for this to happen we need to implement health checks to Harmony microservices & add the required readiness & liveness probes.
Add database health checks
Add RabbitMQ health checks
Add readiness & liveness probes in all microservices
This version goal is to introduce an API Gateway so there's a unified point of entry into harmony system. For this, Ocelot Gateway will be used to:
Proxy all requests starting with /core to Harmony.Api
Proxy all requests starting with /automations to Harmony.Automations
Proxy all WebSocket connections to Harmony.Signalr through Gateway This way, the client only needs to know a single endpoint configuration, the gateway's endpoint. Also the gateway can be used for other reasons in the future, e.g. caching, rate limiting, service discovery, tracing, load balancer, kubernetes
Create new project Harmony.ApiGateway
Integrate Harmony.Api to Gateway
Integrate Harmony.Automations to Gateway
Integrate Harmony.SignalR to Gateway
Dockerize Harmony.ApiGateway
Create Dockerfile for Harmony.Api.
Create Dockerfile for Harmony.SignalR.
Create Dockerfile for Harmony.Client.
Create Dockerfile for Harmony.Automations.
Create Dockerfile for Harmony.Notifications.
Create docker-compose file to start Harmony with a single command.
Minor fixes on Image URLs
Display archived cards.
Re-activate archived cards by moving them either to a board (Kanban) or to a sprint (Scrum).
Sync board across all connections upon card creation or archiving.
Implement Smart auto-assign automation.
Rename Harmony.Notifications HangFire database to Harmony.Notification.Jobs (breaking - check databases & SQL Server sections).
Use a new Harmony.Automations.Jobs SQL Server database for HangFire jobs in Harmony.Automations.
This version's goal is to integrate gRPC communication between internal microservices. This will finalize the solution design towards a dockerized microservice architecture.
The only application that has direct access to the main harmony database is the Harmony.Api.
The only application that has direct access to the MongoDB automations database is the Harmony.Automations.
gRPC is a modern open source high performance Remote Procedure Call (RPC) framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication.
Expose gRPC services from Harmony.Api.
Expose gRPC service from Harmony.Automations.
Remove direct harmony database access from Harmony.Automations and consume gRPC service from Harmony.Api instead.
Remove direct harmony database access from Harmony.Notifications and consume gRPC service from Harmony.Api instead.
Remove direct MongoDB database access from Harmony.Api and consume gRPC service from Harmony.Automations instead.
Upgrade solution projects to .NET 8.0
Convert Harmony.Client to Standalone Blazor WebAssembly project.
Rename Harmony.Server to Harmony.API (microservice).
Rename Harmony.Server.SignalR to Harmony.SignalR.
Remove all MongoDB database dependencies/access from all projects except from Harmony.Automations (Harmony.Automations will be a microservice).
Expose HTTP endpoints for internal microservice communication.
The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency.
This version will bring 3 major upgrades which will level up Harmony even more:
Add the very first automation. The first automation template that will be implemented is the "Auto close parent issue when all sub-tasks are done".
Create a scalable SignalR web app responsible for pushing the board related updates to clients. Another scaling issue to be solved.
Version 2.0 will set things up towards a dockerized solution. Sit back and relax, this might take a while.
Add support for child issues to cards.
Change issue status from card's view.
Display total number of child issues per card on board.
Create Harmony.Automations project for handling automations.
Create Automations settings page.
Create, enable, disable and remove an automation.
Create Harmony.Server.SignalR project for handling SignalR messages.
We are searching for some kind of harmony between two intangibles: a form which we have not yet designed and a context which we cannot properly describe.
Implement a database fallback search service in case there's no search engine integration configuration
Add app bar search textbox for fast results
Create search modal option for advanced searching scenarios (based on several criteria, e.g. issue status, members assigned, board etc.)
Add caching to database operations
For more info on how to setup the search engine read the Search Engine docs.
Why Algolia & not Elastic Search?
Algolia search is faster, more relevant, and easier to use than Elasticsearch for searching simple database data. Algolia's focus is on getting exceptional results with minimal configuration.
Elasticsearch is more flexible for searching complex data and can be used for a wider range of search applications.
Implement story points for issues
Display number of comments on board
Fix RabbitMQ configuration (add username, password, virtual host)
Fix validation issue on edit sprint modal
Load board query fixes for scrum projects
This version's goal was to add email notifications using Gmail configuration and optional email service provider such as Brevo. For best practices and scaling capabilities, a new project was created, responsible to send the notifications. The entire setup will be based on RabbitMQ messaging & HangFire.
Other than that, there were fixes and an amazing UX improvement on the board level and specifically when moving cards. It became more responsive while it also syncs the board status across all connected members
RabbitMQ messaging integration
New Harmony.Notifications web application with HangFire integration for background jobs
Add Gmail integration for email notifications
Add Brevo integration for email notifications
Add due date reminder field on card's date edit view (e.g. 1 day before, 1 hour before, etc..)
3 default board lists are added for Kanban projects as well
Add user options for enabling/disabling notifications
UX board improvements
Member added to a workspace
Workspace access revoked from member
Member added to a board
Board access revoked from member
Issue completed (moved to a list marked as DONE)
Due date based on due date reminder type
Member assigned to card
Member has given access to board
Board access revoked
Fixes for card movement in the board, especially with positioning
Fix typo error when building in Release mode
Ensure Files folder exists inside the published folder when publishing Harmony.Server web app
Create backlog
Create sprints
Start a sprint
Complete a sprint & move any pending items to backlog or a different sprint
Move items from sprint to backlog
Move items from backlog to sprints
Introduce issue types for cards (Epic, Bug, Task, Story, Task)
Create Serial Key to easily identify cards/issues, e.g.
Create board/sprint navigation items (left menu & breadcrumbs)
Change backlog items order
Add remove button to remove attachments
Clear card's dates
Update user's profile picture in all user card's components after uploading a picture in account page
Update text on Enter key pressed on EditableTextField component
Display loader when creating cards
Scroll to the card's position added when creating a card within a list filled with multiple cards
User registration / login
Create workspaces
Add users to workspaces
Create KANBAN boards
Add users to boards
Add lists to boards
Rename & reorder lists
Add cards to boards
Move cards
Assign users to cards
Add labels to cards
Toggle labels, add custom labels to board/cards
Add checklists to cards
Add check list items to checklists
Add start / due date to cards
Register some activities
How about leveling up Harmony once again!
This version's goal is to integrate GitHub directly to Harmony boards! It would be great if you could link GitHub issues, branches, pull requests, etc.. with board items. GitHub will be the first source control integration, others will follow next. Read the GitHubintegration guide to configure your source control settings.
Automatically sync card's repository activity when a GitHub webhook is triggered (no refresh is required)
This version's goal is to support issue linking between issues.
Add link entity migration
Add link to an issue
Remove a link from an issue
Time to level up Harmony once again! This version's goal is to bring the first retrospective implementation! You will be able to create a retrospective for a specific sprint (scrum projects)
Please delete the harmony databases from your local environment to be recreated. There are some breaking changes.
As a bonus , the Sum up story points automation will be implemented. This automation will sum up the story points of all sub-tasks and then update the parent issue with this value.
Create the Sum up story points automation
Archive workspace
Added Kubernetes support
Add distributed logging using Elastic Search & Kibana
This version's goal is to containerize Harmony solution Docker files will be added for every web application in order to define their image build process. Next, a docker-compose file will be responsible to define the services and all of their dependencies (SQL Server, Redis, MongoDB, etc..). Ideally after this release, you should be able to start Harmony by running the following commands:
After working on architectural improvements for a few sprints in a row, it's high time to get back on track and start adding new features
Any interaction between backend microservices should be done through high performant communication using gRPC framework
This version will upgrade the entire solution to .NET 8.0
This version's goal is to add a powerful Search textbox at the top bar . Here are some of the features to be implemented in this release:
Integrate Algolia search engine for super fast indexing & searching capabilities. Algolia is totally free to use for 10000 requests per month and probably the easiest search engine to configure, existing at the moment
This version's goal is to add the first charts for monitoring a scrum project's progress . Also support for adding comments in cards will be added
Create, edit, delete comments
Add burndown chart report for scrum sprints
View card in Fullscreen
Update backlog item inline
Update sprint item inline
Add support for Scrum Projects!