All notable changes to this project will be documented in this file.
- [web] A minimal login capability to enable the use 'self' keyword in queries.
- [cli] --version argument to display the current version
- [config] Ability to define custom links to be displayed in the web UI.
- [web] An about modal that displays configured links and Monocle version.
- [web] A new toggle can be used to show or hide change until they are updated.
- [web] Board - swap button for board columns editor.
- [monitoring] prometheus metrics and instructions to start with prometheus and grafana containers.
- [web] Left side menu can be collapsed/expanded.
- [web] Search field moved out of the top menu into a Patternfly PageSection.
- [cli] Interface to run update-idents command.
- [backend] The
monocle-api
andmacroscope
CLI have been merged into a singlemonocle
tool.
- [api] workspaces' crawler entities not created/refreshed at config changes #739.
- [crawler] Identities aliases are now properly assigned for GitLab and Gerrit author.
- [crawler] Gerrit - mergeable status not correctly computed.
- [crawler] Gerrit - ChangeCommentedEvent and ChangeReviewedEvent overlap.
- [crawler] Gerrit - Fix decoding issue where a Gerrit author name might be undefined.
Notice that the crawler and api containers are based on a recent version of Fedora 35 that requires a recent Docker (>= 20.10.3).
- [contrib] Example of Python clients for the Monocle OpenAPI.
- [web] filter by labels.
- [crawler] Gerrit crawler is managed by Macroscope and removed from crawler-legacy.
- [api/web] Some keys name in the Monocle Query Language (eg. all task related keys are prefixed with "task.")
- [api] The legacy task data last_updated/add/commit are replaced by the new crawler commit_info/add/commit api.
- [crawler] GitHub issues are now collected for all projects, (it was only fetching the first one).
- [macroscope] Added support for BugZilla crawler.
- [macroscope] Added support for GitHub Issues crawler.
- [config] Support update_since date format as "YYYY-mm-dd" for macroscope crawlers.
- [web] Added suggestions in Fields selector for projects and groups.
- [web] Display Task Data info in Board Kanban view.
- [web] Make the search help a modal.
- [web] Display a spinner when the query is refreshing.
- [web] Total open changes on repository summary page.
- [web] Only display mergeable status if conflicting.
- [web] Board - add column for branch and make it clickable
- [web] Display "Abandoned" is state instead of "closed" and do not display mergeable status.
- [web] Board - improve editor layout.
- [web] Make change title links to the external change page.
- [web] Adjust the default board to show Done at the end.
- [web] Adjust changes view to display a maximum of 256 changes.
- [web] Nomenclature of columns in Repository view.
- [api] repo, branch and author are now regex query
- [api] task query are now named tag and it is a regex
- [api] Support for unicode operators and whitespace around non boolean operators in the query language.
- [web] Footer stickyness.
- [api] Peer strengh and repo summary query slowness has been reduced.
This release features some major refactoring. See v1-roadmap. Most notable changes are:
- a new OpenAPI served through the Haskell RunTime
- a new WEB application written in ReScript
- a new query system based on the Monocle query language
- [api,web] Query Language to replace the filter form.
- [crawler] Support GitLab provider.
- [web] Multiple UX improvements.
- [api] Index acl authentication using the
users
settings is removed. To protect an index use an authentication proxy instead. - [web] Remove support of the FilterForm based query system.
- [config] The crawler configuration is now using a new schema, use the
monocle migrate-config
command to upgrade the configuration. - [config] The secret are now passed through environment variables, use the new
.secrets
file with docker-compose.
- [web] Support for REMOTE_USER header to enable external authentication system
- [config] Added configuration section to enable the merge of contributor's metrics across code review systems.
- [dbmanage] Added update-idents option.
- [api,web,crawler] - added secure communication (SSL) and user authentication with Elasticsearch
- [api] Added the
api/1/get_projects
endpoint (list defined project for an index). - [api] Added the query parameter
project
to query metrics for a given project. - [web] Add a project filter selection in the Filter Box.
- [api,config] Endpoints to connect task tracker crawlers
- [api] Support of three new query attributes (task_type, task_priority, task_severity)
- [compose] Added ADDR and PORT variables to enable multiple service deployment on a single host
- [compose] Simplified deployment by using a single MONOCLE_PUBLIC_URL for both monocle-web and monocle-api using nginx proxy pass.
- [web] Added suggestion in filter box for approval, authors and task data type, severity, priority fields
- [api,web] Added task data score support in the api and the web ui (filterform)
- [web] Change state filter becomes a multi-term field
- [web] change terminology from "average to" to "mean time to".
- [compose] Renamed MONOCLE_URL into MONOCLE_PUBLIC_URL
- [compose] Replaced the node http serve with nginx
- [compose] Replaced MONOCLE_API_URL with MONOCLE_API_ADDR and MONOCLE_API_PORT
- [config] Add missing validation for
prefix
option of the Gerrit crawler. - [crawler] Add missing change url field for gerrit events
- [readme] Added migration instructions for identity consolidation.
- [dbmanage] Added migration process: from-0.8-to-last-stable
- [web] Fix links computation on the repositories summary page.
- [crawler] compute if a change is self merged.
- [api] add the self_merged query parameter.
- [web] Add ui integration for the self-merged changed.
- [web] compute and display self_merged/created ratio.
- [docker-compose] added restart and health-check directives for api and elastic.
- [crawler] add an optional prefix for gerrit projects (configured in the config file).
- [crawler] add a dummy driver for documentation purpose.
- [web] Add a direct link to external change url in changes pages.
- [web] Add links to changes page from the repositories summary page.
- [api] changes_lifecycle_stats return the Median Deviation of duration (Time To Merge).
- [web] Display the "Median Deviation of TTM".
- [api] bump Python version to 3.9.1.
- [database] bump Elasticsearch to 7.10.1.
- [api] Ensure the gte and lte date filters are set after all other params are set.
- [db] added the run-migrate option to dbmanage to run migration scripts.
- [readme] migration instructions for the new self_merged field has added.
- [web]: display a filter summary below the filter box.
- [api] and [web]: add a repos summary page
- [db] set max_buckets to a higher default value
- [web] and [api]: better display of api error and logging server side
- [web]: re-organization of changes related pages.
- [web]: re-factored top menu.
- [web]: make approval pie clickable.
- [web]: improve relative date selector.
- [web] pie charts invisible when legend is too large.
- [cli] add dbmanage option to delete a Monocle index.
- [web] add the approvals and exclude_approvals filters available into the changes pages.
- [api] add the exclude_approvals paramater support.
- [crawler] gerrit add support for http basic auth.
- [crawler] gerrit add insecure option to bypass SSL certificate verification.
- [database] switch to ElasticSearch from 6.8 to 7.8 engine. Indexes created with previous Monocle version are compatible.
- [web] better responsive layout for the filtersbox.
- [api] rename param approval to approvals and make it comma separated list.
- [web] reworked the look and feel of changes tables for a better readability
- [web] set bootstrap table with size=sm for a better look and feel
- [crawler] github application: use authlib.jose.jwt instead of pyjwt.
- [compose] change the selinux label Z to z. This indicates that the bind mount content is shared among multiple containers". This fixes an issue where the config file is not found in the in crawler or api container.
- [api] validate updated_since date format in the configuration file.
- [api] fix tz issue in queries due to the use of naive datetime object.
- [api] ensure most_active_authors_stats display top authors by merged change.
- [crawler] gerrit ChangeReviewedEvent approval remove leading space. No data migration script provided, a wipe then re-indexation of the gerrit repositories is needed.
- [api] fix change_lifecycle_stats return null values when authors is set
- [web] fix wrong backend query on the change page (gte missing)
- [crawler] support for a GitHub application.
- [web] warning message when small screen (width < 1024).
- [web] display active authors histogram in People page.
- [api] add authors_histo and authors_histo_stats queries.
- [crawler] adaptative page size for GitHub. If it's not enough, don't get the commits data when we are failing for one PR.
- [web] moved approval dispersion pie in changes summary.
- [crawler] protect get rate limit calls.
- [web] better look and feel on small device like smartphone.
- [api] limit first_comment|review_on_changes to 10000 objects to avoid performance issue.
- [compose] expose ES_XMS and ES_XMX to configure the ElasticSearch JVM HEAP size.
- [compose] add MONOCLE_API_URL env var to ease production deployment.
- [web] add a footer with a link to the GitHub project.
- [web] allow to customize the title with the
REACT_APP_TITLE
environment variable orMONOCLE_TITLE
in the.env
file. - [web] do not display login link if authentication is not configured.
- [api] use Flask-Caching to cache requests for 5 minutes.
- [web,api] compute and display pie charts for the abandoned-changes page.
- [web] make the authors and repos pie charts clickable.
- [api] add the has-issue-tracker-links parameter.
- [api] add the tests_included parameter.
- [install] split
README.md
inREADME.md
andCONTRIBUTING.md
. - [build] build containers in 2 steps to save space.
- [crawler] github use exponential tenacity retry
- [crawler] follow GitHub abuse rate limits guidelines: obey to the Retry-After header for the GitHub api calls, sleep 1s between calls and set the User-Agent header to change-metrics/monocle.
- [compose] allow to configure on which addresses the services are exposed.
- [web] fix the menu header.
- [web] add a spinner in the LoadingBox.
- [web] put the new contributors at the end of the /people/ page because the list can be long.
- [web] make the peer strength graph smaller on the /people/ page.
- [crawler] log error before retrying GitHub graphql queries.
- [backend] upgraded to Elasticsearch 6.8.8.
- [web, api] improve and move issue tracker links detection from ui to the backend.
- [web] add a new favicon.ico.
- [web] split top page into a people and changes pages.
- [dev] distribute 2 docker-compose.yml files: one for dev and one using images from docker hub.
- [web] do not use the Treemap anymore as it is not consistent in the changes view.
- [api] fix buggy ratio when a change is closed then re-opened
- [web] fix fetching data when changing page.
- [web] do not recreate menu and filter form if not needed.
- [api] fix wrong http code return in case of accessing unauthorized index.
- [web] api calls perfomed multiple times - history listener was not unregistered.
- [crawler] sleep 120 s when we have this message from GitHub: 'You have triggered an abuse detection mechanism. Please wait a few minutes before you try again.'.
- [crawler] fix GitHub PR with empty files.
- [web] carry search params in links inside complexity graphs.
- [web] sync between exclude_authors search param and filter field.
- [web] passing
REACT_APP_API_URL
in container image mode.
- [crawlers] skip GitHub archived repositories.
- [web] list all indices on home page.
- [web] allow to filter on files (regexp).
- [web] add approvals in open changes listing.
- [db] add approvals in Change object for Gerrit and Github crawlers.
- [web] display the timeline of commits in /change/.
- [web,api] add github authentication and basic authorization engine
- [web,api] allow to filter on target_branch. Display the branch name of a change in /change/.
- [web,api] display mean time to merge and commits per change in lifecycle stats.
- [web] add a homepage redirecting to the first index or displaying a message to create an index.
- [api] add a /indices api to get the list of available indices.
- [web] add a Treemap of the files impacted by the changes on the opened and merged pages.
- [api] add 2 requests: changes_by_file_map and authors_by_file_map.
- [api] add files (regexp) and state (
OPEN
,CLOSED
orMERGED
) as query parameters.
- [api,backend] renamed projects.yaml to config.yaml. projects key replaced by tenants key. [BREAKING]
- [db] add target_branch and branch to events. Need to re-index to be able to use these fields. [BREAKING]
- [db] prefix the names of indices by
monocle.changes.
. Need to recreate the indexes or create an alias if you want to keep them. [BREAKING]
- [db] fix missing ChangeReviewedEvent events for Gerrit crawler
- [web] back and forward browser buttons are working fine now when you change filters.
- [web] have a correct history of events in /change/ when filtered on authors (#136)
- [dev] document Architectural Decisions in doc/adr/index.md
- [web,backend] add support for Github Draft status in PR. Displayed in change details and tables of open changes.
- [web] display mergeable status in open changes.
- [web] add a relative date selection box in the filter form.
- [dev] functional tests for the crawler and the query system.
- [web] menus to ease navigation.
- [web] a page to display details about a change.
- [web] sub pages to be able to explore the complete list of changes that are merged, opened or abandonned.
- [web] enhanced navigation by having links changing the filters automatically on users and repositories.
- [web] chord diagram to display collaboration.
- [web] expose the complexity of a change: number of added lines + number of removed lines + number of impacted files.
- [dev] use eslint for js code and black for python code.
- [admin] add kibana support using docker-compose extra file in the contrib directory.
- [dev] hacking instructions in README.md.
- [web] make the browser back button work if the search filter changes
- [backend] crawler uses one thread per Github token.
- [backend] crawler retries multiple times if a Github query doesn't work.
- [web] interval is no more exposed in the UI and computed automcatically in the backend according to the period.
- [web] humanize dates and durations.
- [backend] store the filenames impacted by a change. Need to recreate the indexes.
- [backend] peer strength computation.
- [backend] crawler dumps a PR or review in the dump directory if it cannot parse it.
- [web] no more warnings on the console output.
- [backend] managed Github deleted accounts (ghost).
- initial release