In our company, we use GitHub Issues to track bugs/features in our daily development. Although GitHub Issues has some strong points (notifications, @mentions, integration with pull requests) it is missing some important features very useful when you want to plan your workload or track your progress.
1️⃣ Estimation time to complete an issue
2️⃣ The '% Done' progress of an issue
3️⃣ Overall summary of estimation times + % done on issues
These features come in very handy for managers and team leaders, especially during agile sprints. It was always a headache for the team leaders trying to figure out if they can squeeze issues to a two weeks sprint 🙏
For this purpose, I decided to write an Open Source Chrome Extension GitHub Issues Enhancements capturing this metadata per issue.
The extension use content scripts that run in the context of GitHub pages that display list of issues. It is activated ONLY in specific GitHub pages through Url pattern matching. By using the standard Document Object Model (DOM) and jQuery, it is able to read details of the pages and inject custom DOM elements to them (summary card + two select boxes per issue) and pass information to their parent extension.
The main challenge of creating such an extension was to find a way to persist the issue's time metadata. GitHub does not permit saving extra metadata to an issue beyond the body in markdown format.
Searching the internet 😰, the only vital solution I could found was to save time metadata inside the issue's body as an HTML comment with JSON content. GitHub permits saving HTML comments inside the issue's body but they remain invisible while previewing the issue. The extension does not change in any way the original markdown of the issue but just appends the HTML comment
The only way the extension can save time metadata inside the issue's body is to have read/write/update rights to the issue. For this to happen, the extension requires a GitHub Personal Access Token of the user prior to calling GitHub's REST API. The token is saved in the local storage of the browser never transmitting it in any way over the internet ❗
Fill free to use it.
Hit CTRL+F5 to the browser and enjoy 😄