diff --git a/gitlab/README.rst b/gitlab/README.rst new file mode 100644 index 000000000..553ba4830 --- /dev/null +++ b/gitlab/README.rst @@ -0,0 +1,162 @@ +====== +Gitlab +====== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:06e5b29fb96bdc9d0896b700277e1e3d90761579ee8dabcfe21b4cf8bbe50073 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github + :target: https://github.com/OCA/server-backend/tree/18.0/gitlab + :alt: OCA/server-backend +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-backend-18-0/server-backend-18-0-gitlab + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-backend&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module integrates Odoo with GitLab, allowing you to synchronize +GitLab projects, notes, issues, and merge requests directly in Odoo. You +can handle multiple GitLab instances. The module leverages the +``queue_job`` module for fast and efficient background job processing, +ensuring that data synchronization does not interfere with regular Odoo +operations. + +**Features:** + +- Import GitLab groups and projects +- Import GitLab issues and merge requests +- Import GitLab notes on issues and merge requests +- Throughput calculation for issues and merge requests + +You can use this module on it self or use to build more complex +integrations with GitLab. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +Be sure to have the library ``python-gitlab`` installed in your Odoo +environment. You can install it using pip: + +.. code:: bash + + pip install python-gitlab + +Configuration +============= + +To configure this module please follow the steps below: + +1. Make sure you have configured the ``queue_job`` module, as it is + required for background jobs processing. + +- See https://github.com/OCA/queue/tree/18.0/queue_job for instructions. + +2. **GitLab Instance Configuration**: + +- Ensure you have access to a GitLab instance (self-hosted or + GitLab.com). +- Create a Personal Access Token (PAT) with the ``api`` scope. + +3. **Odoo Configuration**: + + - Navigate to the GitLab connection settings (Settings > Technical > + Gitlab > Connections). + - Enter the GitLab instance URL and the Personal Token. + - Test the connection to ensure it is working correctly. + +4. **Group Setup**: + + - Create an GitLab group in Odoo (Settings > Technical > Gitlab > + Groups). + - After creating the group you can import subgroups automatically + using the "Import Subgroups" button. + +5. **Project Setup**: + + - Create an GitLab project in Odoo (Settings > Technical > Gitlab > + Projects). + - Or import projects directly from the linked GitLab group. This is + recursive and will import all projects of all subgroups. + +6. **Enable Scheduled Actions**: + + - To keep data synchronized, ensure that the scheduled action + "Gitlab: Scheduled Import" is enabled (Settings > Technical > + Automation > Scheduled Actions). by default, this action is + disabled. + +7. **Job Queue Channel**: + + - It is recommended to set up a dedicated job queue channel for + GitLab synchronization tasks to avoid interference with other + background jobs. + +Usage +===== + +The import data is found in Settings > Technical > Gitlab where you can +filter and group by different fields. + +Known issues / Roadmap +====================== + +- Support write operations on GitLab issues and merge requests from Odoo + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Onestein + +Contributors +------------ + +- Dennis Sluijk d.sluijk@onestein.nl + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-backend `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/gitlab/__init__.py b/gitlab/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/gitlab/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/gitlab/__manifest__.py b/gitlab/__manifest__.py new file mode 100644 index 000000000..ea60fc209 --- /dev/null +++ b/gitlab/__manifest__.py @@ -0,0 +1,26 @@ +{ + "name": "Gitlab", + "category": "Tools", + "version": "18.0.1.0.0", + "author": "Onestein, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-backend", + "license": "AGPL-3", + "depends": ["base", "queue_job"], + "external_dependencies": {"python": ["python-gitlab"]}, + "demo": ["demo/gitlab_data.xml"], + "data": [ + "security/ir_model_access.xml", + "data/ir_cron_data.xml", + "data/queue_job_function_data.xml", + "views/gitlab_view.xml", + "views/group_view.xml", + "views/project_view.xml", + "views/commit_view.xml", + "views/issue_view.xml", + "views/merge_request_view.xml", + "views/note_view.xml", + "views/merge_request_approval_view.xml", + "views/res_partner_view.xml", + "menuitems.xml", + ], +} diff --git a/gitlab/data/ir_cron_data.xml b/gitlab/data/ir_cron_data.xml new file mode 100644 index 000000000..5cf29a892 --- /dev/null +++ b/gitlab/data/ir_cron_data.xml @@ -0,0 +1,22 @@ + + + + Gitlab: Scheduled Import + 1 + days + False + + code + model.cron_import() + + + + Gitlab: Update Throughput Times + 1 + days + True + + code + model.cron_update_throughtput_times() + + diff --git a/gitlab/data/queue_job_function_data.xml b/gitlab/data/queue_job_function_data.xml new file mode 100644 index 000000000..c1a8366db --- /dev/null +++ b/gitlab/data/queue_job_function_data.xml @@ -0,0 +1,35 @@ + + + + + _import_projects + + + + _import_subgroups + + + + _import_notes + + + + _import_notes + + + + _import_approvals + + + + _import_merge_requests + + + + _import_issues + + + + _import_commits + + diff --git a/gitlab/demo/gitlab_data.xml b/gitlab/demo/gitlab_data.xml new file mode 100644 index 000000000..8fdcdeb6b --- /dev/null +++ b/gitlab/demo/gitlab_data.xml @@ -0,0 +1,7 @@ + + + + https://gitlab.com + fake_token + + diff --git a/gitlab/menuitems.xml b/gitlab/menuitems.xml new file mode 100644 index 000000000..f6b2e4d80 --- /dev/null +++ b/gitlab/menuitems.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + diff --git a/gitlab/models/__init__.py b/gitlab/models/__init__.py new file mode 100644 index 000000000..1a38be9b6 --- /dev/null +++ b/gitlab/models/__init__.py @@ -0,0 +1,9 @@ +from . import gitlab +from . import group +from . import project +from . import commit +from . import issue +from . import merge_request +from . import note +from . import merge_request_approval +from . import res_partner diff --git a/gitlab/models/commit.py b/gitlab/models/commit.py new file mode 100644 index 000000000..9e90b198f --- /dev/null +++ b/gitlab/models/commit.py @@ -0,0 +1,42 @@ +from odoo import api, fields, models + + +class Commit(models.Model): + _name = "gitlab.commit" + _description = "Gitlab Commit" + _rec_name = "external_id" + + project_id = fields.Many2one( + comodel_name="gitlab.project", string="Project", required=True + ) + external_id = fields.Char(string="External ID", required=True) + message = fields.Text() + author_name = fields.Char() + author_email = fields.Char() + committed_date = fields.Datetime(required=True) + url = fields.Char(string="URL", required=True) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Author Partner", + compute="_compute_partner_id", + store=True, + ) + + @api.depends("author_email") + def _compute_partner_id(self): + for commit in self: + partner_id = self.env["res.partner"].get_by_gitlab_email( + commit.author_email + ) + commit.partner_id = partner_id + + def reconcile_partner(self): + self._compute_partner_id() + + _sql_constraints = [ + ( + "unique_commit_per_project", + "unique(project_id, external_id)", + "The commit must be unique per project.", + ), + ] diff --git a/gitlab/models/gitlab.py b/gitlab/models/gitlab.py new file mode 100644 index 000000000..428309366 --- /dev/null +++ b/gitlab/models/gitlab.py @@ -0,0 +1,57 @@ +from odoo import api, fields, models + +import gitlab + + +class Gitlab(models.Model): + _name = "gitlab" + _description = "Gitlab Connection" + + url = fields.Char(string="URL", default="https://gitlab.com") + private_token = fields.Char(string="Private / Personal Token", required=True) + debug = fields.Boolean(string="Enable Debug Mode") + per_page = fields.Integer(string="Pagination", default=100) + + @api.depends("url") + def _compute_display_name(self): + for rec in self: + rec.display_name = rec.url + + def get_server_connection(self): + self.ensure_one() + conn = gitlab.Gitlab( + url=self.url, private_token=self.private_token, retry_transient_errors=True + ) # Use the gitlab library rate limiting and retry logic instead of + # RetryableJobError, because GitlabHttpError doesn't include rate limit headers, + # if this is blocking other jobs you should create a separate channel + if self.debug: + conn.enable_debug() + return conn + + def validate(self): + conn = self.get_server_connection() + conn.auth() + return { + "type": "ir.actions.client", + "tag": "display_notification", + "params": { + "message": self.env._("Connection Test Successful"), + "type": "success", + }, + } + + @api.model + def cron_import(self): + for project in self.env["gitlab.project"].search([]): + project.import_commits() + project.import_issues() + project.import_merge_requests() + + @api.model + def cron_update_throughtput_times(self): + issues = self.env["gitlab.issue"].search([("state", "!=", "closed")]) + issues._compute_throughtput_time() + merge_requests = self.env["gitlab.merge.request"].search( + [("state", "not in", ("merged", "closed"))] + ) + merge_requests._compute_throughtput_time() diff --git a/gitlab/models/group.py b/gitlab/models/group.py new file mode 100644 index 000000000..ba8e8af29 --- /dev/null +++ b/gitlab/models/group.py @@ -0,0 +1,109 @@ +from odoo import api, fields, models + + +class Group(models.Model): + _name = "gitlab.group" + _description = "Gitlab Group" + _parent_name = "parent_id" + _parent_store = True + + gitlab_id = fields.Many2one(comodel_name="gitlab", string="Gitlab", required=True) + name = fields.Char(required=True) + external_id = fields.Char( + string="External ID", store=True, readonly=True, compute="_compute_external_id" + ) + project_ids = fields.One2many( + comodel_name="gitlab.project", + inverse_name="group_id", + string="Projects", + ) + parent_path = fields.Char(index=True) + parent_id = fields.Many2one(string="Parent", comodel_name="gitlab.group") + child_ids = fields.One2many( + comodel_name="gitlab.group", + inverse_name="parent_id", + string="Subgroups", + ) + + _sql_constraints = [ + ( + "unique_gitlab_group", + "unique(gitlab_id, name)", + "The group name must be unique per Gitlab instance.", + ), + ( + "unique_external_id", + "unique(gitlab_id, external_id)", + "The external ID must be unique per Gitlab instance.", + ), + ] + + @api.depends("name", "gitlab_id") + def _compute_external_id(self): + for rec in self: + external_id = False + if rec.gitlab_id and rec.name: + conn = rec.gitlab_id.get_server_connection() + group = conn.groups.get(rec.name) + external_id = group.id + rec.external_id = external_id + + def import_subgroups(self): + self.with_delay()._import_subgroups() + + def _import_subgroups(self): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + group = conn.groups.get(self.name, max_retries=-1) + + existing_groups = self.child_ids + existing_groups_map = existing_groups.mapped("external_id") + subgroups = group.subgroups.list( + get_all=True, all_available=True, max_retries=-1 + ) + + for subgroup in subgroups: + subgroup_id = str(subgroup.id) + if subgroup_id not in existing_groups_map: + gitlab_group = self.env["gitlab.group"].create( + { + "gitlab_id": self.gitlab_id.id, + "parent_id": self.id, + "name": subgroup.full_path, + "external_id": subgroup_id, + } + ) + else: + gitlab_group = existing_groups.filtered( + lambda g, iid=subgroup_id: g.external_id == iid + ) + gitlab_group.with_delay()._import_subgroups() + + def import_projects(self): + self.with_delay()._import_projects() + + def _import_projects(self): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + group = conn.groups.get(self.name, max_retries=-1) + projects = group.projects.list(get_all=True, max_retries=-1) + + existing_projects = self.project_ids.mapped("external_id") + create_values = [] + + for project in projects: + project_id = str(project.id) + if project_id not in existing_projects: + create_values.append( + { + "gitlab_id": self.gitlab_id.id, + "group_id": self.id, + "name": project.name, + "external_id": project_id, + "url": project.web_url, + } + ) + self.env["gitlab.project"].create(create_values) + + for subgroup in self.child_ids: + subgroup.with_delay()._import_projects() diff --git a/gitlab/models/issue.py b/gitlab/models/issue.py new file mode 100644 index 000000000..86c2664e9 --- /dev/null +++ b/gitlab/models/issue.py @@ -0,0 +1,127 @@ +from datetime import datetime + +from dateutil.relativedelta import relativedelta + +from odoo import api, fields, models + +from ..utils import _gitlab_datetime_to_odoo + + +class Issue(models.Model): + _name = "gitlab.issue" + _description = "Gitlab Issue" + + project_id = fields.Many2one( + comodel_name="gitlab.project", string="Project", required=True + ) + gitlab_id = fields.Many2one( + comodel_name="gitlab", string="Gitlab", related="project_id.gitlab_id" + ) + external_id = fields.Char(string="External ID", required=True) + name = fields.Char(string="Title", required=True) + description = fields.Text() + url = fields.Char(required=True) + created_at = fields.Datetime() + updated_at = fields.Datetime() + closed_at = fields.Datetime() + author_username = fields.Char(string="Username") + state = fields.Selection( + selection=[ + ("opened", "Opened"), + ("closed", "Closed"), + ] + ) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Author Partner", + compute="_compute_partner_id", + store=True, + ) + throughtput_time = fields.Integer( + string="Throughput Time (days)", compute="_compute_throughtput_time", store=True + ) + + @api.depends("created_at", "closed_at") + def _compute_throughtput_time(self): + for issue in self: + if issue.closed_at and issue.created_at: + delta = issue.closed_at - issue.created_at + issue.throughtput_time = delta.days + else: + delta = fields.Datetime.now() - issue.created_at + issue.throughtput_time = delta.days + + @api.depends("author_username") + def _compute_partner_id(self): + for issue in self: + partner_id = self.env["res.partner"].get_by_gitlab_username( + issue.author_username + ) + issue.partner_id = partner_id + + def reconcile_partner(self): + self._compute_partner_id() + + _sql_constraints = [ + ( + "unique_issue_per_project", + "unique(project_id, external_id)", + "The issue must be unique per project.", + ), + ] + + note_ids = fields.One2many( + comodel_name="gitlab.note", + inverse_name="issue_id", + string="Notes", + ) + + def import_notes(self): + until = fields.Datetime.now() + + for issue in self: + since = datetime.min + last_note = self.env["gitlab.note"].search( + [("issue_id", "=", issue.id)], + order="created_at desc", + limit=1, + ) + if last_note: + since = last_note.created_at + # Adding a second to avoid duplicate notes on the boundary + since += relativedelta(seconds=1) + + issue.with_delay(max_retries=0)._import_notes( + 1, issue.gitlab_id.per_page, since, until + ) + + def _import_notes(self, page, per_page, since, until): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + project = conn.projects.get(self.project_id.external_id, max_retries=-1) + issue = project.issues.get(self.external_id, max_retries=-1) + params = { + "page": page, + "per_page": per_page, + "sort": "asc", + "order_by": "created_at", + } + notes = issue.notes.list(**params) + existing_notes = self.note_ids.mapped("external_id") + filtered_notes = filter(lambda n: str(n.id) not in existing_notes, notes) + create_values = [ + { + "project_id": self.project_id.id, + "external_id": str(note.id), + "name": note.body, + "created_at": _gitlab_datetime_to_odoo(note.created_at), + "author_username": note.author["username"], + "issue_id": self.id, + "url": f"{self.url}#note_{note.id}", + } + for note in filtered_notes + ] + self.env["gitlab.note"].create(create_values) + if not notes: + return + self._import_notes(page + 1, per_page, since, until) diff --git a/gitlab/models/merge_request.py b/gitlab/models/merge_request.py new file mode 100644 index 000000000..eb1ec23f6 --- /dev/null +++ b/gitlab/models/merge_request.py @@ -0,0 +1,148 @@ +from odoo import api, fields, models + +from ..utils import _gitlab_datetime_to_odoo + + +class MergeRequest(models.Model): + _name = "gitlab.merge.request" + _description = "Gitlab Merge Request" + + project_id = fields.Many2one( + comodel_name="gitlab.project", string="Project", required=True + ) + gitlab_id = fields.Many2one( + comodel_name="gitlab", string="Gitlab", related="project_id.gitlab_id" + ) + external_id = fields.Char(string="External ID", required=True) + name = fields.Char(required=True) + description = fields.Text() + url = fields.Char(required=True) + created_at = fields.Datetime() + updated_at = fields.Datetime() + closed_at = fields.Datetime() + merged_at = fields.Datetime() + author_username = fields.Char(string="Username") + state = fields.Selection( + selection=[ + ("opened", "Opened"), + ("closed", "Closed"), + ("merged", "Merged"), + ("locked", "Locked"), + ] + ) + note_ids = fields.One2many( + comodel_name="gitlab.note", + inverse_name="merge_request_id", + string="Notes", + ) + approval_ids = fields.One2many( + comodel_name="gitlab.merge.request.approval", + inverse_name="merge_request_id", + string="Approvals", + ) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Author Partner", + compute="_compute_partner_id", + store=True, + ) + throughtput_time = fields.Integer( + string="Throughput Time (days)", compute="_compute_throughtput_time", store=True + ) + + _sql_constraints = [ + ( + "gitlab_merge_request_uniq", + "unique(project_id, external_id)", + "A merge request with the same External " + "ID already exists for this project.", + ), + ] + + @api.depends("created_at", "merged_at", "closed_at") + def _compute_throughtput_time(self): + for merge_request in self: + if merge_request.merged_at and merge_request.created_at: + delta = merge_request.merged_at - merge_request.created_at + merge_request.throughtput_time = delta.days + if merge_request.closed_at and merge_request.created_at: + delta = merge_request.closed_at - merge_request.created_at + merge_request.throughtput_time = delta.days + else: + delta = fields.Datetime.now() - merge_request.created_at + merge_request.throughtput_time = delta.days + + @api.depends("author_username") + def _compute_partner_id(self): + for merge_request in self: + partner_id = self.env["res.partner"].get_by_gitlab_username( + merge_request.author_username + ) + merge_request.partner_id = partner_id + + def reconcile_partner(self): + self._compute_partner_id() + + def import_approvals(self): + for merge_request in self: + merge_request.with_delay(max_retries=0)._import_approvals() + + def _import_approvals(self): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + project = conn.projects.get(self.project_id.external_id, max_retries=-1) + merge_request = project.mergerequests.get(self.external_id, max_retries=-1) + approvals = merge_request.approvals.get(max_retries=-1) + create_values = [] + for approval in approvals.approved_by: + approval_user_id = str(approval["user"]["id"]) + if self.approval_ids.filtered( + lambda a, iid=approval_user_id: a.approver_id == iid + ): + continue + create_values.append( + { + "merge_request_id": self.id, + "approver_username": approval["user"]["username"], + "approver_id": approval_user_id, + "approved_at": _gitlab_datetime_to_odoo(approval["approved_at"]), + } + ) + self.env["gitlab.merge.request.approval"].create(create_values) + + def import_notes(self): + for merge_request in self: + merge_request.with_delay(max_retries=0)._import_notes( + 1, merge_request.gitlab_id.per_page + ) + + def _import_notes(self, page, per_page): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + project = conn.projects.get(self.project_id.external_id, max_retries=-1) + merge_request = project.mergerequests.get(self.external_id, max_retries=-1) + params = { + "page": page, + "per_page": per_page, + "sort": "asc", + "order_by": "created_at", + } + notes = merge_request.notes.list(**params) + existing_notes = self.note_ids.mapped("external_id") + filtered_notes = filter(lambda n: str(n.id) not in existing_notes, notes) + create_values = [ + { + "project_id": self.project_id.id, + "external_id": str(note.id), + "name": note.body, + "created_at": _gitlab_datetime_to_odoo(note.created_at), + "author_username": note.author["username"], + "merge_request_id": self.id, + "url": f"{self.url}#note_{note.id}", + } + for note in filtered_notes + ] + self.env["gitlab.note"].create(create_values) + if not notes: + return + self._import_notes(page + 1, per_page) diff --git a/gitlab/models/merge_request_approval.py b/gitlab/models/merge_request_approval.py new file mode 100644 index 000000000..4d72adedb --- /dev/null +++ b/gitlab/models/merge_request_approval.py @@ -0,0 +1,33 @@ +from odoo import api, fields, models + + +class MergeRequestApproval(models.Model): + _name = "gitlab.merge.request.approval" + _description = "Gitlab Merge Request Approval" + + merge_request_id = fields.Many2one( + comodel_name="gitlab.merge.request", + string="Merge Request", + required=True, + ondelete="cascade", + ) + approver_username = fields.Char(required=True) + approver_id = fields.Char(string="Approver ID", required=True) + approved_at = fields.Datetime(required=True) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Approver Partner", + compute="_compute_partner_id", + store=True, + ) + + @api.depends("approver_username") + def _compute_partner_id(self): + for approval in self: + partner_id = self.env["res.partner"].get_by_gitlab_username( + approval.approver_username + ) + approval.partner_id = partner_id + + def reconcile_partner(self): + self._compute_partner_id() diff --git a/gitlab/models/note.py b/gitlab/models/note.py new file mode 100644 index 000000000..945dd1c0a --- /dev/null +++ b/gitlab/models/note.py @@ -0,0 +1,40 @@ +from odoo import api, fields, models + + +class Note(models.Model): + _name = "gitlab.note" + _description = "Gitlab Note" + + project_id = fields.Many2one( + comodel_name="gitlab.project", string="Project", required=True + ) + external_id = fields.Char( + string="External ID", required=True + ) # Char because Gitlab ids are larger than int4 + name = fields.Char(required=True) + created_at = fields.Datetime() + author_username = fields.Char(string="Username") + merge_request_id = fields.Many2one( + comodel_name="gitlab.merge.request", string="Merge Request", ondelete="cascade" + ) + issue_id = fields.Many2one( + comodel_name="gitlab.issue", string="Issue", ondelete="cascade" + ) + url = fields.Char(string="URL", required=True) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Author Partner", + compute="_compute_partner_id", + store=True, + ) + + @api.depends("author_username") + def _compute_partner_id(self): + for note in self: + partner_id = self.env["res.partner"].get_by_gitlab_username( + note.author_username + ) + note.partner_id = partner_id + + def reconcile_partner(self): + self._compute_partner_id() diff --git a/gitlab/models/project.py b/gitlab/models/project.py new file mode 100644 index 000000000..87365e00e --- /dev/null +++ b/gitlab/models/project.py @@ -0,0 +1,225 @@ +from datetime import datetime + +from dateutil.relativedelta import relativedelta + +from odoo import fields, models + +from ..utils import _gitlab_datetime_to_odoo + + +class Project(models.Model): + _name = "gitlab.project" + _description = "Gitlab Project" + + gitlab_id = fields.Many2one(comodel_name="gitlab", string="Gitlab", required=True) + name = fields.Char(required=True) + external_id = fields.Char(string="External ID", store=True) + url = fields.Char() + group_id = fields.Many2one( + comodel_name="gitlab.group", + string="Group", + required=True, + ) + issue_ids = fields.One2many( + comodel_name="gitlab.issue", + inverse_name="project_id", + string="Issues", + ) + merge_request_ids = fields.One2many( + comodel_name="gitlab.merge.request", + inverse_name="project_id", + string="Merge Requests", + ) + + def import_commits(self): + until = fields.Datetime.now() + + for project in self: + since = datetime.min + last_commit = self.env["gitlab.commit"].search( + [("project_id", "=", project.id)], order="committed_date desc", limit=1 + ) + if last_commit: + since = last_commit.committed_date + # Adding a second to avoid duplicate commits on the boundary + since += relativedelta(seconds=1) + + project.with_delay(max_retries=0)._import_commits( + 1, project.gitlab_id.per_page, since, until + ) + + def _import_commits(self, page, per_page, since, until): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + project = conn.projects.get(self.external_id) + params = { + "page": page, + "per_page": per_page, + "until": fields.Datetime.to_string(until), + } + if since > datetime.min: + params.update(since=fields.Datetime.to_string(since)) + commits = project.commits.list(**params) + create_values = [] + for commit in commits: + create_values.append( + { + "project_id": self.id, + "author_email": commit.author_email, + "author_name": commit.author_name, + "external_id": commit.id, + "message": commit.message, + "url": commit.web_url, + "committed_date": _gitlab_datetime_to_odoo(commit.committed_date), + } + ) + self.env["gitlab.commit"].create(create_values) + if not commits: + return + self.with_delay(max_retries=0)._import_commits(page + 1, per_page, since, until) + + def import_issues(self): + until = fields.Datetime.now() + + for project in self: + since = datetime.min + last_issue = self.env["gitlab.issue"].search( + [("project_id", "=", project.id)], order="updated_at desc", limit=1 + ) + if last_issue: + since = last_issue.updated_at + # Adding a second to avoid duplicate issues on the boundary + since += relativedelta(seconds=1) + + project.with_delay(max_retries=0)._import_issues( + 1, project.gitlab_id.per_page, since, until + ) + + def _import_issues(self, page, per_page, since, until): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + project = conn.projects.get(self.external_id) + params = { + "page": page, + "per_page": per_page, + "updated_before": fields.Datetime.to_string(until), + "order_by": "updated_at", + "scope": "all", + "sort": "asc", + "state": "all", + } + if since > datetime.min: + params.update(updated_after=fields.Datetime.to_string(since)) + issues = project.issues.list(**params) + create_values = [] + updated_issues = self.env["gitlab.issue"] + for issue in issues: + issue_iid = str(issue.iid) + existing_issue = self.issue_ids.filtered( + lambda i, iid=issue_iid: i.external_id == iid + ) + if existing_issue: + existing_issue.write( + { + "state": issue.state, + "updated_at": _gitlab_datetime_to_odoo(issue.updated_at), + } + ) + updated_issues += existing_issue + else: + create_values.append( + { + "project_id": self.id, + "external_id": issue_iid, + "name": issue.title, + "description": issue.description, + "author_username": issue.author["username"], + "url": issue.web_url, + "created_at": _gitlab_datetime_to_odoo(issue.created_at), + "state": issue.state, + "updated_at": _gitlab_datetime_to_odoo(issue.updated_at), + "closed_at": _gitlab_datetime_to_odoo(issue.closed_at), + } + ) + new_issues = self.env["gitlab.issue"].create(create_values) + (updated_issues + new_issues).import_notes() + + if not issues: + return + self.with_delay(max_retries=0)._import_issues(page + 1, per_page, since, until) + + def import_merge_requests(self): + until = fields.Datetime.now() + + for project in self: + since = datetime.min + last_mr = self.env["gitlab.merge.request"].search( + [("project_id", "=", project.id)], order="updated_at desc", limit=1 + ) + if last_mr: + since = last_mr.updated_at + # Adding a second to avoid duplicate MRs on the boundary + since += relativedelta(seconds=1) + + project.with_delay(max_retries=0)._import_merge_requests( + 1, project.gitlab_id.per_page, since, until + ) + + def _import_merge_requests(self, page, per_page, since, until): + self.ensure_one() + conn = self.gitlab_id.get_server_connection() + project = conn.projects.get(self.external_id) + params = { + "page": page, + "per_page": per_page, + "updated_before": fields.Datetime.to_string(until), + "order_by": "updated_at", + "scope": "all", + "sort": "asc", + "state": "all", + } + if since > datetime.min: + params.update(updated_after=fields.Datetime.to_string(since)) + mrs = project.mergerequests.list(**params) + create_values = [] + updated_merge_requests = self.env["gitlab.merge.request"] + for mr in mrs: + mr_iid = str(mr.iid) + existing_mr = self.merge_request_ids.filtered( + lambda m, iid=mr_iid: m.external_id == iid + ) + if existing_mr: + existing_mr.write( + { + "state": mr.state, + "updated_at": _gitlab_datetime_to_odoo(mr.updated_at), + } + ) + updated_merge_requests += existing_mr + else: + create_values.append( + { + "project_id": self.id, + "external_id": mr_iid, + "name": mr.title, + "description": mr.description, + "author_username": mr.author["username"], + "url": mr.web_url, + "created_at": _gitlab_datetime_to_odoo(mr.created_at), + "state": mr.state, + "updated_at": _gitlab_datetime_to_odoo(mr.updated_at), + "closed_at": _gitlab_datetime_to_odoo(mr.closed_at), + "merged_at": _gitlab_datetime_to_odoo(mr.merged_at), + } + ) + new_merge_requests = self.env["gitlab.merge.request"].create(create_values) + all_merge_requests = updated_merge_requests + new_merge_requests + all_merge_requests.import_notes() + all_merge_requests.import_approvals() + + if not mrs: + return + # Sometimes Gitlab returns 99 items, yet there are more pages + self.with_delay(max_retries=0)._import_merge_requests( + page + 1, per_page, since, until + ) diff --git a/gitlab/models/res_partner.py b/gitlab/models/res_partner.py new file mode 100644 index 000000000..6d4dda11a --- /dev/null +++ b/gitlab/models/res_partner.py @@ -0,0 +1,33 @@ +from odoo import api, fields, models, tools + + +class ResPartner(models.Model): + _inherit = "res.partner" + + gitlab_username = fields.Char() + gitlab_email = fields.Char() + + @api.model + @tools.ormcache("username") + def get_by_gitlab_username(self, username): + partner = self.search([("gitlab_username", "=", username)], limit=1) + return partner.id if partner else None + + @api.model + @tools.ormcache("email") + def get_by_gitlab_email(self, email): + partner = self.search([("gitlab_email", "=", email)], limit=1) + return partner.id if partner else None + + def write(self, vals): + self.env.registry.clear_cache() + return super().write(vals) + + def unlink(self): + self.env.registry.clear_cache() + return super().unlink() + + @api.model_create_multi + def create(self, vals_list): + self.env.registry.clear_cache() + return super().create(vals_list) diff --git a/gitlab/pyproject.toml b/gitlab/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/gitlab/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/gitlab/readme/CONFIGURE.md b/gitlab/readme/CONFIGURE.md new file mode 100644 index 000000000..9473872f2 --- /dev/null +++ b/gitlab/readme/CONFIGURE.md @@ -0,0 +1,27 @@ +To configure this module please follow the steps below: + +1. Make sure you have configured the `queue_job` module, as it is required for background jobs processing. + - See https://github.com/OCA/queue/tree/18.0/queue_job for instructions. + +2. **GitLab Instance Configuration**: + - Ensure you have access to a GitLab instance (self-hosted or GitLab.com). + - Create a Personal Access Token (PAT) with the `api` scope. + +3. **Odoo Configuration**: + - Navigate to the GitLab connection settings (Settings > Technical > Gitlab > Connections). + - Enter the GitLab instance URL and the Personal Token. + - Test the connection to ensure it is working correctly. + +4. **Group Setup**: + - Create an GitLab group in Odoo (Settings > Technical > Gitlab > Groups). + - After creating the group you can import subgroups automatically using the "Import Subgroups" button. + +5. **Project Setup**: + - Create an GitLab project in Odoo (Settings > Technical > Gitlab > Projects). + - Or import projects directly from the linked GitLab group. This is recursive and will import all projects of all subgroups. + +6. **Enable Scheduled Actions**: + - To keep data synchronized, ensure that the scheduled action "Gitlab: Scheduled Import" is enabled (Settings > Technical > Automation > Scheduled Actions). by default, this action is disabled. + +7. **Job Queue Channel**: + - It is recommended to set up a dedicated job queue channel for GitLab synchronization tasks to avoid interference with other background jobs. diff --git a/gitlab/readme/CONTRIBUTORS.md b/gitlab/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..036ad5754 --- /dev/null +++ b/gitlab/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Dennis Sluijk diff --git a/gitlab/readme/DESCRIPTION.md b/gitlab/readme/DESCRIPTION.md new file mode 100644 index 000000000..777c085ea --- /dev/null +++ b/gitlab/readme/DESCRIPTION.md @@ -0,0 +1,10 @@ +This module integrates Odoo with GitLab, allowing you to synchronize GitLab projects, notes, issues, and merge requests directly in Odoo. +You can handle multiple GitLab instances. The module leverages the `queue_job` module for fast and efficient background job processing, ensuring that data synchronization does not interfere with regular Odoo operations. + +**Features:** +- Import GitLab groups and projects +- Import GitLab issues and merge requests +- Import GitLab notes on issues and merge requests +- Throughput calculation for issues and merge requests + +You can use this module on it self or use to build more complex integrations with GitLab. diff --git a/gitlab/readme/INSTALL.md b/gitlab/readme/INSTALL.md new file mode 100644 index 000000000..8d19db507 --- /dev/null +++ b/gitlab/readme/INSTALL.md @@ -0,0 +1,6 @@ +Be sure to have the library `python-gitlab` installed in your Odoo environment. +You can install it using pip: + +```bash +pip install python-gitlab +``` diff --git a/gitlab/readme/ROADMAP.md b/gitlab/readme/ROADMAP.md new file mode 100644 index 000000000..6fb15dba0 --- /dev/null +++ b/gitlab/readme/ROADMAP.md @@ -0,0 +1 @@ +- Support write operations on GitLab issues and merge requests from Odoo diff --git a/gitlab/readme/USAGE.md b/gitlab/readme/USAGE.md new file mode 100644 index 000000000..747b1041a --- /dev/null +++ b/gitlab/readme/USAGE.md @@ -0,0 +1 @@ +The import data is found in Settings > Technical > Gitlab where you can filter and group by different fields. diff --git a/gitlab/security/ir_model_access.xml b/gitlab/security/ir_model_access.xml new file mode 100644 index 000000000..4d4258b48 --- /dev/null +++ b/gitlab/security/ir_model_access.xml @@ -0,0 +1,82 @@ + + + + gitlab_access + + + + + + + + + + group_access + + + + + + + + + + project_access + + + + + + + + + + commit_access + + + + + + + + + + issue_access + + + + + + + + + + merge_request_access + + + + + + + + + + note_access + + + + + + + + + + approval_access + + + + + + + + diff --git a/gitlab/static/description/index.html b/gitlab/static/description/index.html new file mode 100644 index 000000000..730d52de7 --- /dev/null +++ b/gitlab/static/description/index.html @@ -0,0 +1,515 @@ + + + + + +Gitlab + + + +
+

Gitlab

+ + +

Beta License: AGPL-3 OCA/server-backend Translate me on Weblate Try me on Runboat

+

This module integrates Odoo with GitLab, allowing you to synchronize +GitLab projects, notes, issues, and merge requests directly in Odoo. You +can handle multiple GitLab instances. The module leverages the +queue_job module for fast and efficient background job processing, +ensuring that data synchronization does not interfere with regular Odoo +operations.

+

Features:

+
    +
  • Import GitLab groups and projects
  • +
  • Import GitLab issues and merge requests
  • +
  • Import GitLab notes on issues and merge requests
  • +
  • Throughput calculation for issues and merge requests
  • +
+

You can use this module on it self or use to build more complex +integrations with GitLab.

+

Table of contents

+ +
+

Installation

+

Be sure to have the library python-gitlab installed in your Odoo +environment. You can install it using pip:

+
+pip install python-gitlab
+
+
+
+

Configuration

+

To configure this module please follow the steps below:

+
    +
  1. Make sure you have configured the queue_job module, as it is +required for background jobs processing.
  2. +
+ +
    +
  1. GitLab Instance Configuration:
  2. +
+
    +
  • Ensure you have access to a GitLab instance (self-hosted or +GitLab.com).
  • +
  • Create a Personal Access Token (PAT) with the api scope.
  • +
+
    +
  1. Odoo Configuration:
      +
    • Navigate to the GitLab connection settings (Settings > Technical > +Gitlab > Connections).
    • +
    • Enter the GitLab instance URL and the Personal Token.
    • +
    • Test the connection to ensure it is working correctly.
    • +
    +
  2. +
  3. Group Setup:
      +
    • Create an GitLab group in Odoo (Settings > Technical > Gitlab > +Groups).
    • +
    • After creating the group you can import subgroups automatically +using the “Import Subgroups” button.
    • +
    +
  4. +
  5. Project Setup:
      +
    • Create an GitLab project in Odoo (Settings > Technical > Gitlab > +Projects).
    • +
    • Or import projects directly from the linked GitLab group. This is +recursive and will import all projects of all subgroups.
    • +
    +
  6. +
  7. Enable Scheduled Actions:
      +
    • To keep data synchronized, ensure that the scheduled action +“Gitlab: Scheduled Import” is enabled (Settings > Technical > +Automation > Scheduled Actions). by default, this action is +disabled.
    • +
    +
  8. +
  9. Job Queue Channel:
      +
    • It is recommended to set up a dedicated job queue channel for +GitLab synchronization tasks to avoid interference with other +background jobs.
    • +
    +
  10. +
+
+
+

Usage

+

The import data is found in Settings > Technical > Gitlab where you can +filter and group by different fields.

+
+
+

Known issues / Roadmap

+
    +
  • Support write operations on GitLab issues and merge requests from Odoo
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Onestein
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-backend project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/gitlab/tests/__init__.py b/gitlab/tests/__init__.py new file mode 100644 index 000000000..281408ca6 --- /dev/null +++ b/gitlab/tests/__init__.py @@ -0,0 +1 @@ +from . import test_import diff --git a/gitlab/tests/test_import.py b/gitlab/tests/test_import.py new file mode 100644 index 000000000..e88e51ba7 --- /dev/null +++ b/gitlab/tests/test_import.py @@ -0,0 +1,54 @@ +import logging +from datetime import datetime +from os.path import dirname, join + +import requests +from vcr import VCR + +from odoo import fields +from odoo.tests import TransactionCase + +logging.getLogger("vcr").setLevel(logging.WARNING) + +recorder = VCR( + record_mode="once", + cassette_library_dir=join(dirname(__file__), "vcr_cassettes"), + path_transformer=VCR.ensure_suffix(".yaml"), + filter_headers=["Authorization", "PRIVATE-TOKEN"], + decode_compressed_response=True, +) +_super_send = requests.Session.send + + +class TestGitlabImport(TransactionCase): + @classmethod + def _request_handler(cls, s, r, /, **kw): + """Don't block external requests.""" + return _super_send(s, r, **kw) + + def test_normal_import(self): + gitlab_id = self.ref("gitlab.gitlab_demo") + + group = self.env["gitlab.group"].create( + { + "gitlab_id": gitlab_id, + "name": "ubports/development/core/flatpak", + "external_id": 10965795, + } + ) + + project = self.env["gitlab.project"].create( + { + "gitlab_id": gitlab_id, + "group_id": group.id, + "name": "ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime", + "external_id": 10965795, + } + ) + until = fields.Datetime.now() + since = datetime.min + with recorder.use_cassette("success_imports"): + group._import_subgroups() + project._import_issues(1, project.gitlab_id.per_page, since, until) + project._import_commits(1, project.gitlab_id.per_page, since, until) + project._import_merge_requests(1, project.gitlab_id.per_page, since, until) diff --git a/gitlab/tests/vcr_cassettes/success_imports.yaml b/gitlab/tests/vcr_cassettes/success_imports.yaml new file mode 100644 index 000000000..d8d7ef6d5 --- /dev/null +++ b/gitlab/tests/vcr_cassettes/success_imports.yaml @@ -0,0 +1,1259 @@ +interactions: + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/groups/ubports%2Fdevelopment%2Fcore%2Fflatpak + response: + body: + string: + '{"id":10853245,"web_url":"https://gitlab.com/groups/ubports/development/core/flatpak","name":"Flatpak","path":"flatpak","description":"","visibility":"public","share_with_group_lock":false,"require_two_factor_authentication":false,"two_factor_grace_period":48,"project_creation_level":"developer","auto_devops_enabled":null,"subgroup_creation_level":"maintainer","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"mentions_disabled":null,"lfs_enabled":true,"archived":false,"math_rendering_limits_enabled":true,"lock_math_rendering_limits_enabled":false,"default_branch":null,"default_branch_protection":2,"default_branch_protection_defaults":{"allowed_to_push":[{"access_level":40}],"allow_force_push":false,"allowed_to_merge":[{"access_level":40}]},"avatar_url":null,"request_access_enabled":true,"full_name":"UBports + / Development / Core / + Flatpak","full_path":"ubports/development/core/flatpak","created_at":"2021-02-02T22:04:20.507Z","parent_id":4298794,"organization_id":1,"shared_runners_setting":"enabled","max_artifacts_size":null,"marked_for_deletion_on":null,"ldap_cn":null,"ldap_access":null,"wiki_access_level":"enabled","shared_with_groups":[],"projects":[{"id":27497936,"description":"Content + Hub stub that forwards as much as possible to QFileDialog and possibly xdg + portals","name":"Content Stub","name_with_namespace":"UBports / Development / + Core / Flatpak / Content + Stub","path":"content-stub","path_with_namespace":"ubports/development/core/flatpak/content-stub","created_at":"2021-06-16T22:54:57.158Z","default_branch":"master","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:ubports/development/core/flatpak/content-stub.git","http_url_to_repo":"https://gitlab.com/ubports/development/core/flatpak/content-stub.git","web_url":"https://gitlab.com/ubports/development/core/flatpak/content-stub","readme_url":null,"forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2024-04-22T02:05:01.837Z","visibility":"public","namespace":{"id":10853245,"name":"Flatpak","path":"flatpak","kind":"group","full_path":"ubports/development/core/flatpak","parent_id":4298794,"avatar_url":null,"web_url":"https://gitlab.com/groups/ubports/development/core/flatpak"},"container_registry_image_prefix":"registry.gitlab.com/ubports/development/core/flatpak/content-stub","_links":{"self":"https://gitlab.com/api/v4/projects/27497936","issues":"https://gitlab.com/api/v4/projects/27497936/issues","merge_requests":"https://gitlab.com/api/v4/projects/27497936/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/27497936/repository/branches","labels":"https://gitlab.com/api/v4/projects/27497936/labels","events":"https://gitlab.com/api/v4/projects/27497936/events","members":"https://gitlab.com/api/v4/projects/27497936/members","cluster_agents":"https://gitlab.com/api/v4/projects/27497936/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2021-06-17T22:54:57.186Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2379787,"import_status":"none","open_issues_count":0,"description_html":"\u003cp + data-sourcepos=\"1:1-1:90\" dir=\"auto\"\u003eContent Hub stub that forwards + as much as possible to QFileDialog and possibly xdg + portals\u003c/p\u003e","updated_at":"2024-04-22T02:42:11.039Z","ci_config_path":"","public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"approvals_before_merge":0,"mirror":false,"external_authorization_classification_label":"","requirements_enabled":true,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"issues_template":null,"merge_requests_template":null,"merge_pipelines_enabled":false,"merge_trains_enabled":false,"merge_trains_skip_train_allowed":false,"only_allow_merge_if_all_status_checks_passed":false,"allow_pipeline_trigger_approve_deployment":false,"prevent_merge_without_jira_issue":false,"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"duo_sast_fp_detection_enabled":false,"spp_repository_pipeline_access":false},{"id":10965795,"description":"","name":"Ubuntu + Touch Flatpak Runtime","name_with_namespace":"UBports / Development / Core / + Flatpak / Ubuntu Touch Flatpak + Runtime","path":"ubuntu-touch-flatpak-runtime","path_with_namespace":"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","created_at":"2019-02-21T18:31:11.781Z","default_branch":"master","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","http_url_to_repo":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","web_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","readme_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/blob/master/README.md","forks_count":6,"avatar_url":null,"star_count":11,"last_activity_at":"2025-09-16T20:14:35.369Z","visibility":"public","namespace":{"id":10853245,"name":"Flatpak","path":"flatpak","kind":"group","full_path":"ubports/development/core/flatpak","parent_id":4298794,"avatar_url":null,"web_url":"https://gitlab.com/groups/ubports/development/core/flatpak"},"container_registry_image_prefix":"registry.gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","_links":{"self":"https://gitlab.com/api/v4/projects/10965795","issues":"https://gitlab.com/api/v4/projects/10965795/issues","merge_requests":"https://gitlab.com/api/v4/projects/10965795/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/10965795/repository/branches","labels":"https://gitlab.com/api/v4/projects/10965795/labels","events":"https://gitlab.com/api/v4/projects/10965795/events","members":"https://gitlab.com/api/v4/projects/10965795/members","cluster_agents":"https://gitlab.com/api/v4/projects/10965795/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2379787,"import_status":"none","open_issues_count":4,"description_html":"","updated_at":"2025-09-16T20:14:35.369Z","ci_config_path":"","public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":false,"request_access_enabled":false,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":false,"printing_merge_request_link_enabled":true,"merge_method":"ff","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":"","merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"approvals_before_merge":0,"mirror":false,"external_authorization_classification_label":"","requirements_enabled":true,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"issues_template":null,"merge_requests_template":"","merge_pipelines_enabled":false,"merge_trains_enabled":false,"merge_trains_skip_train_allowed":false,"only_allow_merge_if_all_status_checks_passed":false,"allow_pipeline_trigger_approve_deployment":false,"prevent_merge_without_jira_issue":false,"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"duo_sast_fp_detection_enabled":false,"spp_repository_pipeline_access":false}],"shared_projects":[],"shared_runners_minutes_limit":null,"extra_shared_runners_minutes_limit":null,"prevent_forking_outside_group":false,"membership_lock":false,"ip_restriction_ranges":null,"allowed_email_domains_list":null,"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":false,"only_allow_merge_if_all_discussions_are_resolved":false}' + headers: + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c6562ee4d5a3-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:13 GMT + ETag: + - W/"8d36ea8818ff56b7c32d4e7b9866764a" + Server: + - cloudflare + Set-Cookie: + - __cf_bm=EZdT6VjMFtlp_TJ6fwCc4n8PfgUUvUeGkhYV4wgfMpk-1768945693-1.0.1.1-k9H62Xx4WV5qZ0NcqM929nv1oqUoM1y.vs4bSm0S3P2ST_qBxItUphfatsoVs42IM.S1Z8A.YnuqizUve5l6O02oYoWK0T0_u.YHuABq.TY; + path=/; expires=Tue, 20-Jan-26 22:18:13 GMT; domain=.gitlab.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=Yne502sAoGyV3bu0piiSSqBg6fta8XM4c7_5aLHR7fc-1768945693529-0.0.1.1-604800000; + path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + Vary: + - Origin, Accept-Encoding + content-length: + - "10919" + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-25-lb-gprd + gitlab-sv: + - api-gke-us-east1-b + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "1" + ratelimit-remaining: + - "1999" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c6563385d5a3-ATL","version":"1"}' + x-request-id: + - 9c11c6563385d5a3-ATL + x-runtime: + - "0.239982" + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + Cookie: + - __cf_bm=EZdT6VjMFtlp_TJ6fwCc4n8PfgUUvUeGkhYV4wgfMpk-1768945693-1.0.1.1-k9H62Xx4WV5qZ0NcqM929nv1oqUoM1y.vs4bSm0S3P2ST_qBxItUphfatsoVs42IM.S1Z8A.YnuqizUve5l6O02oYoWK0T0_u.YHuABq.TY; + _cfuvid=Yne502sAoGyV3bu0piiSSqBg6fta8XM4c7_5aLHR7fc-1768945693529-0.0.1.1-604800000 + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/groups/10853245/subgroups?all_available=True + response: + body: + string: "[]" + headers: + Accept-Ranges: + - bytes + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c6592e191c8c-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Length: + - "2" + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:13 GMT + ETag: + - W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" + Link: + - ; + rel="first", + ; + rel="last" + Server: + - cloudflare + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Origin, Accept-Encoding + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-42-lb-gprd + gitlab-sv: + - api-gke-us-east1-d + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "2" + ratelimit-remaining: + - "1998" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c65944d91c8c-ATL","version":"1"}' + x-next-page: + - "" + x-page: + - "1" + x-per-page: + - "20" + x-prev-page: + - "" + x-request-id: + - 9c11c65944d91c8c-ATL + x-runtime: + - "0.127049" + x-total: + - "0" + x-total-pages: + - "1" + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/projects/10965795 + response: + body: + string: + '{"id":10965795,"description":"","name":"Ubuntu Touch Flatpak + Runtime","name_with_namespace":"UBports / Development / Core / Flatpak / + Ubuntu Touch Flatpak + Runtime","path":"ubuntu-touch-flatpak-runtime","path_with_namespace":"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","created_at":"2019-02-21T18:31:11.781Z","default_branch":"master","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","http_url_to_repo":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","web_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","readme_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/blob/master/README.md","forks_count":6,"avatar_url":null,"star_count":11,"last_activity_at":"2025-09-16T20:14:35.369Z","visibility":"public","namespace":{"id":10853245,"name":"Flatpak","path":"flatpak","kind":"group","full_path":"ubports/development/core/flatpak","parent_id":4298794,"avatar_url":null,"web_url":"https://gitlab.com/groups/ubports/development/core/flatpak"},"container_registry_image_prefix":"registry.gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","_links":{"self":"https://gitlab.com/api/v4/projects/10965795","issues":"https://gitlab.com/api/v4/projects/10965795/issues","merge_requests":"https://gitlab.com/api/v4/projects/10965795/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/10965795/repository/branches","labels":"https://gitlab.com/api/v4/projects/10965795/labels","events":"https://gitlab.com/api/v4/projects/10965795/events","members":"https://gitlab.com/api/v4/projects/10965795/members","cluster_agents":"https://gitlab.com/api/v4/projects/10965795/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2379787,"import_status":"none","open_issues_count":4,"description_html":"","updated_at":"2025-09-16T20:14:35.369Z","ci_config_path":"","public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":false,"request_access_enabled":false,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":false,"printing_merge_request_link_enabled":true,"merge_method":"ff","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":"","merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"approvals_before_merge":0,"mirror":false,"external_authorization_classification_label":"","requirements_enabled":true,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"issues_template":null,"merge_requests_template":"","merge_pipelines_enabled":false,"merge_trains_enabled":false,"merge_trains_skip_train_allowed":false,"only_allow_merge_if_all_status_checks_passed":false,"allow_pipeline_trigger_approve_deployment":false,"prevent_merge_without_jira_issue":false,"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"duo_sast_fp_detection_enabled":false,"spp_repository_pipeline_access":false,"permissions":{"project_access":null,"group_access":null}}' + headers: + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c65b7bd8f5b2-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:14 GMT + ETag: + - W/"3489aba455fbbbfeca6adb28ac400bf5" + Server: + - cloudflare + Set-Cookie: + - __cf_bm=M5seuRSorqaDmUjpq0JjD8RBMPpq0bhE1Zk309FzzFY-1768945694-1.0.1.1-vRHBcqFsYRUxyFuUXw62meR4JWMPPsPuCUkrjpusFiO3QSURL6V1Y3mUk91ozQVHbCab6nJ2jecp79vVZqCmT1luTLKlKRxcUVIt29jtS4o; + path=/; expires=Tue, 20-Jan-26 22:18:14 GMT; domain=.gitlab.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=ZFkCQhLHRws1pIHXV.PMxRC.4ikkREKE_iXJRg2IIoQ-1768945694305-0.0.1.1-604800000; + path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + Vary: + - Origin, Accept-Encoding + content-length: + - "4634" + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-57-lb-gprd + gitlab-sv: + - api-gke-us-east1-d + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "3" + ratelimit-remaining: + - "1997" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c65b8645f5b2-ATL","version":"1"}' + x-request-id: + - 9c11c65b8645f5b2-ATL + x-runtime: + - "0.152103" + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + Cookie: + - __cf_bm=M5seuRSorqaDmUjpq0JjD8RBMPpq0bhE1Zk309FzzFY-1768945694-1.0.1.1-vRHBcqFsYRUxyFuUXw62meR4JWMPPsPuCUkrjpusFiO3QSURL6V1Y3mUk91ozQVHbCab6nJ2jecp79vVZqCmT1luTLKlKRxcUVIt29jtS4o; + _cfuvid=ZFkCQhLHRws1pIHXV.PMxRC.4ikkREKE_iXJRg2IIoQ-1768945694305-0.0.1.1-604800000 + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/projects/10965795/issues?page=1&per_page=100&updated_before=2026-01-20+21%3A48%3A13&order_by=updated_at&scope=all&sort=asc&state=all + response: + body: + string: + "[{\"id\":89015244,\"iid\":2,\"project_id\":10965795,\"title\":\"Disable more + unit tests\",\"description\":\"We are not running unit tests anyway, so + building them wastes + time.\",\"state\":\"opened\",\"created_at\":\"2021-06-21T08:31:40.562Z\",\"updated_at\":\"2021-06-21T08:31:40.562Z\",\"closed_at\":null,\"closed_by\":null,\"labels\":[],\"milestone\":null,\"assignees\":[],\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"type\":\"ISSUE\",\"assignee\":null,\"user_notes_count\":0,\"merge_requests_count\":0,\"upvotes\":0,\"downvotes\":0,\"due_date\":null,\"confidential\":false,\"discussion_locked\":null,\"issue_type\":\"issue\",\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/issues/2\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"weight\":null,\"blocking_issues_count\":0,\"has_tasks\":true,\"task_status\":\"0 + of 0 checklist items + completed\",\"_links\":{\"self\":\"https://gitlab.com/api/v4/projects/10965795/issues/2\",\"notes\":\"https://gitlab.com/api/v4/projects/10965795/issues/2/notes\",\"award_emoji\":\"https://gitlab.com/api/v4/projects/10965795/issues/2/award_emoji\",\"project\":\"https://gitlab.com/api/v4/projects/10965795\",\"closed_as_duplicate_of\":null},\"references\":{\"short\":\"#2\",\"relative\":\"#2\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime#2\"},\"severity\":\"UNKNOWN\",\"moved_to_id\":null,\"imported\":false,\"imported_from\":\"none\",\"service_desk_reply_to\":null,\"epic_iid\":null,\"epic\":null,\"iteration\":null,\"health_status\":null},{\"id\":88757249,\"iid\":1,\"project_id\":10965795,\"title\":\"Find + a place to store the repository\",\"description\":\"Hosting it on GitLab + artifacts has problems:\\n* our repository is already too large and not + accepted by GitLab any more\\n* GitLab artifacts is really slow for many + individual files like a flatpak repository.\\n\\nIn the beginning we stored + the repository on https://images.plasma-mobile.org/, maybe we could do that + again if it's okay to \\\"leak\\\" the authentication token for it to + GitLab.com, and if there is enough + space.\",\"state\":\"opened\",\"created_at\":\"2021-06-15T15:14:44.733Z\",\"updated_at\":\"2022-07-18T17:56:30.361Z\",\"closed_at\":null,\"closed_by\":null,\"labels\":[],\"milestone\":null,\"assignees\":[],\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"type\":\"ISSUE\",\"assignee\":null,\"user_notes_count\":9,\"merge_requests_count\":0,\"upvotes\":0,\"downvotes\":0,\"due_date\":null,\"confidential\":false,\"discussion_locked\":null,\"issue_type\":\"issue\",\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/issues/1\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"weight\":null,\"blocking_issues_count\":0,\"has_tasks\":true,\"task_status\":\"0 + of 0 checklist items + completed\",\"_links\":{\"self\":\"https://gitlab.com/api/v4/projects/10965795/issues/1\",\"notes\":\"https://gitlab.com/api/v4/projects/10965795/issues/1/notes\",\"award_emoji\":\"https://gitlab.com/api/v4/projects/10965795/issues/1/award_emoji\",\"project\":\"https://gitlab.com/api/v4/projects/10965795\",\"closed_as_duplicate_of\":null},\"references\":{\"short\":\"#1\",\"relative\":\"#1\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime#1\"},\"severity\":\"UNKNOWN\",\"moved_to_id\":null,\"imported\":false,\"imported_from\":\"none\",\"service_desk_reply_to\":null,\"epic_iid\":null,\"epic\":null,\"iteration\":null,\"health_status\":null},{\"id\":161256301,\"iid\":3,\"project_id\":10965795,\"title\":\"Unable + to add remote\",\"description\":\"Tried adding the remote [as prescribed in + the + README](https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/blob/7517ba1c5c2a7cfc0d9e6c8cde8e2c4cd429c789/README.md#L11-14), + but it doesn't seem to work:\\n\\n```\\n$ flatpak remote-add --no-gpg-verify + ubports + https://gitlab.com/ubports/core/flatpak/ubuntu-touch-flatpak-runtime/-/jobs/artifacts/master/raw/repo/?job=apps\\nerror: + Remote listing for ubports not available; server has no summary file. Check + the URL passed to remote-add was valid.\\n```\\n\\nI'm guessing it's due to + this CI failure: + https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/jobs/8780559922\",\"state\":\"opened\",\"created_at\":\"2025-01-28T11:46:53.391Z\",\"updated_at\":\"2025-01-28T11:46:53.391Z\",\"closed_at\":null,\"closed_by\":null,\"labels\":[],\"milestone\":null,\"assignees\":[],\"author\":{\"id\":2378138,\"username\":\"Newbyte\",\"public_email\":\"\",\"name\":\"Newbyte\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2378138/avatar.png\",\"web_url\":\"https://gitlab.com/Newbyte\"},\"type\":\"ISSUE\",\"assignee\":null,\"user_notes_count\":0,\"merge_requests_count\":0,\"upvotes\":0,\"downvotes\":0,\"due_date\":null,\"confidential\":false,\"discussion_locked\":null,\"issue_type\":\"issue\",\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/issues/3\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"weight\":null,\"blocking_issues_count\":0,\"has_tasks\":true,\"task_status\":\"0 + of 0 checklist items + completed\",\"_links\":{\"self\":\"https://gitlab.com/api/v4/projects/10965795/issues/3\",\"notes\":\"https://gitlab.com/api/v4/projects/10965795/issues/3/notes\",\"award_emoji\":\"https://gitlab.com/api/v4/projects/10965795/issues/3/award_emoji\",\"project\":\"https://gitlab.com/api/v4/projects/10965795\",\"closed_as_duplicate_of\":null},\"references\":{\"short\":\"#3\",\"relative\":\"#3\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime#3\"},\"severity\":\"UNKNOWN\",\"moved_to_id\":null,\"imported\":false,\"imported_from\":\"none\",\"service_desk_reply_to\":null,\"epic_iid\":null,\"epic\":null,\"iteration\":null,\"health_status\":null},{\"id\":168958327,\"iid\":4,\"project_id\":10965795,\"title\":\"Suggestion: + add example for a flatpak package .yml in the README for how to use the ubuntu + touch runtime as a base for packaging an app\",\"description\":\"My apologies + if this already is in the README and I simply missed it, but I wanted to + suggest you add example for a flatpak package .yml in the README for how to + use the ubuntu touch runtime as a base for packaging an app. This would make + it easier to start trying to package an ubuntu touch application for flathub, + which I'm trying to do right now. I need a base SDK with the lomiri dev and Qt + dev and Qt web engine dev packages (Qt5) to get started, and it seems like the + ubuntu touch flatpak runtime may fit the bill, but I'm not quite sure how to + actually reference it in a package to test it out.\\n\\nSorry again if this is + a really obvious task already covered in the documentation and I just missed + it.\",\"state\":\"opened\",\"created_at\":\"2025-06-16T12:09:39.497Z\",\"updated_at\":\"2025-06-16T13:16:28.847Z\",\"closed_at\":null,\"closed_by\":null,\"labels\":[],\"milestone\":null,\"assignees\":[],\"author\":{\"id\":28512198,\"username\":\"temp-since-gitlab-deleted-my-previous-account\",\"public_email\":\"\",\"name\":\"Temp + Account\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8f2d5a244c18edb7a539e9bbd6b4284b0d2329dc7e5444e8b261b4b67ad61d42?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/temp-since-gitlab-deleted-my-previous-account\"},\"type\":\"ISSUE\",\"assignee\":null,\"user_notes_count\":3,\"merge_requests_count\":0,\"upvotes\":0,\"downvotes\":0,\"due_date\":null,\"confidential\":false,\"discussion_locked\":null,\"issue_type\":\"issue\",\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/issues/4\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"weight\":null,\"blocking_issues_count\":0,\"has_tasks\":true,\"task_status\":\"0 + of 0 checklist items + completed\",\"_links\":{\"self\":\"https://gitlab.com/api/v4/projects/10965795/issues/4\",\"notes\":\"https://gitlab.com/api/v4/projects/10965795/issues/4/notes\",\"award_emoji\":\"https://gitlab.com/api/v4/projects/10965795/issues/4/award_emoji\",\"project\":\"https://gitlab.com/api/v4/projects/10965795\",\"closed_as_duplicate_of\":null},\"references\":{\"short\":\"#4\",\"relative\":\"#4\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime#4\"},\"severity\":\"UNKNOWN\",\"moved_to_id\":null,\"imported\":false,\"imported_from\":\"none\",\"service_desk_reply_to\":null,\"epic_iid\":null,\"epic\":null,\"iteration\":null,\"health_status\":null}]" + headers: + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c65e080e4389-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:14 GMT + ETag: + - W/"f75d3cf2f543d04411e110402e8ce202" + Link: + - ; + rel="first", + ; + rel="last" + Server: + - cloudflare + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + Vary: + - Origin, Accept-Encoding + content-length: + - "8807" + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-39-lb-gprd + gitlab-sv: + - api-gke-us-east1-d + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "4" + ratelimit-remaining: + - "1996" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c65e33ee4389-ATL","version":"1"}' + x-next-page: + - "" + x-page: + - "1" + x-per-page: + - "100" + x-prev-page: + - "" + x-request-id: + - 9c11c65e33ee4389-ATL + x-runtime: + - "0.201332" + x-total: + - "4" + x-total-pages: + - "1" + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/projects/10965795 + response: + body: + string: + '{"id":10965795,"description":"","name":"Ubuntu Touch Flatpak + Runtime","name_with_namespace":"UBports / Development / Core / Flatpak / + Ubuntu Touch Flatpak + Runtime","path":"ubuntu-touch-flatpak-runtime","path_with_namespace":"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","created_at":"2019-02-21T18:31:11.781Z","default_branch":"master","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","http_url_to_repo":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","web_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","readme_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/blob/master/README.md","forks_count":6,"avatar_url":null,"star_count":11,"last_activity_at":"2025-09-16T20:14:35.369Z","visibility":"public","namespace":{"id":10853245,"name":"Flatpak","path":"flatpak","kind":"group","full_path":"ubports/development/core/flatpak","parent_id":4298794,"avatar_url":null,"web_url":"https://gitlab.com/groups/ubports/development/core/flatpak"},"container_registry_image_prefix":"registry.gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","_links":{"self":"https://gitlab.com/api/v4/projects/10965795","issues":"https://gitlab.com/api/v4/projects/10965795/issues","merge_requests":"https://gitlab.com/api/v4/projects/10965795/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/10965795/repository/branches","labels":"https://gitlab.com/api/v4/projects/10965795/labels","events":"https://gitlab.com/api/v4/projects/10965795/events","members":"https://gitlab.com/api/v4/projects/10965795/members","cluster_agents":"https://gitlab.com/api/v4/projects/10965795/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2379787,"import_status":"none","open_issues_count":4,"description_html":"","updated_at":"2025-09-16T20:14:35.369Z","ci_config_path":"","public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":false,"request_access_enabled":false,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":false,"printing_merge_request_link_enabled":true,"merge_method":"ff","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":"","merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"approvals_before_merge":0,"mirror":false,"external_authorization_classification_label":"","requirements_enabled":true,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"issues_template":null,"merge_requests_template":"","merge_pipelines_enabled":false,"merge_trains_enabled":false,"merge_trains_skip_train_allowed":false,"only_allow_merge_if_all_status_checks_passed":false,"allow_pipeline_trigger_approve_deployment":false,"prevent_merge_without_jira_issue":false,"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"duo_sast_fp_detection_enabled":false,"spp_repository_pipeline_access":false,"permissions":{"project_access":null,"group_access":null}}' + headers: + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c660fb89bccf-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:15 GMT + ETag: + - W/"3489aba455fbbbfeca6adb28ac400bf5" + Server: + - cloudflare + Set-Cookie: + - __cf_bm=3ORyiE77AMeN6Z3YRRSyiaUaNh1otnpXQ4QHgGHtKYw-1768945695-1.0.1.1-wHKNTdz9pWOGlkSiSby_fDzwz.JcCyUtvs0GlEuu8YvEibjRS4VubvSqmrlma6mG_KP5wPolVkYCzZOHEpLJ6etmAXygYvXwWf.Dx82RI6I; + path=/; expires=Tue, 20-Jan-26 22:18:15 GMT; domain=.gitlab.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=KAMtH7y9nIAh6NDg3bAMM7qWK0h3hnLlrpL3ycqgqEI-1768945695164-0.0.1.1-604800000; + path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + Vary: + - Origin, Accept-Encoding + content-length: + - "4634" + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-51-lb-gprd + gitlab-sv: + - api-gke-us-east1-d + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "5" + ratelimit-remaining: + - "1995" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c66110e5bccf-ATL","version":"1"}' + x-request-id: + - 9c11c66110e5bccf-ATL + x-runtime: + - "0.141387" + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + Cookie: + - __cf_bm=3ORyiE77AMeN6Z3YRRSyiaUaNh1otnpXQ4QHgGHtKYw-1768945695-1.0.1.1-wHKNTdz9pWOGlkSiSby_fDzwz.JcCyUtvs0GlEuu8YvEibjRS4VubvSqmrlma6mG_KP5wPolVkYCzZOHEpLJ6etmAXygYvXwWf.Dx82RI6I; + _cfuvid=KAMtH7y9nIAh6NDg3bAMM7qWK0h3hnLlrpL3ycqgqEI-1768945695164-0.0.1.1-604800000 + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/projects/10965795/repository/commits?page=1&per_page=100&until=2026-01-20+21%3A48%3A13 + response: + body: + string: + "[{\"id\":\"a2637383d328f3c0ecd157026aa14355dcdf2b3f\",\"short_id\":\"a2637383\",\"created_at\":\"2025-07-25T16:31:54.000+02:00\",\"parent_ids\":[\"7517ba1c5c2a7cfc0d9e6c8cde8e2c4cd429c789\"],\"title\":\"Make + it build again\",\"message\":\"Make it build + again\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2025-07-25T16:31:54.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2025-07-25T16:31:54.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a2637383d328f3c0ecd157026aa14355dcdf2b3f\"},{\"id\":\"7517ba1c5c2a7cfc0d9e6c8cde8e2c4cd429c789\",\"short_id\":\"7517ba1c\",\"created_at\":\"2025-01-04T22:16:48.000+01:00\",\"parent_ids\":[\"fcc1ef74de76ce3ee6f16f46761d532e6bc03d29\"],\"title\":\"Fix + build with latest dependencies\",\"message\":\"Fix build with latest + dependencies\\n\",\"author_name\":\"Jonas + Heinrich\",\"author_email\":\"onny@project-insanity.org\",\"authored_date\":\"2025-01-04T22:11:05.000+01:00\",\"committer_name\":\"Jonas + Heinrich\",\"committer_email\":\"onny@project-insanity.org\",\"committed_date\":\"2025-01-04T22:16:48.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/7517ba1c5c2a7cfc0d9e6c8cde8e2c4cd429c789\"},{\"id\":\"fcc1ef74de76ce3ee6f16f46761d532e6bc03d29\",\"short_id\":\"fcc1ef74\",\"created_at\":\"2024-04-25T02:38:57.000+02:00\",\"parent_ids\":[\"e60ed42d4f8ce590ddefa913945b0063a3cfe69e\"],\"title\":\"filemanager: + Use QApplication so we can load QFileDialog\",\"message\":\"filemanager: Use + QApplication so we can load QFileDialog\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2024-04-25T02:38:54.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2024-04-25T02:38:57.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/fcc1ef74de76ce3ee6f16f46761d532e6bc03d29\"},{\"id\":\"e60ed42d4f8ce590ddefa913945b0063a3cfe69e\",\"short_id\":\"e60ed42d\",\"created_at\":\"2024-04-25T02:38:06.000+02:00\",\"parent_ids\":[\"1074a66d1c175351f692d2c2deb5721786d9ec0f\"],\"title\":\"gallery: + Fix thumbnails\",\"message\":\"gallery: Fix + thumbnails\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2024-04-25T02:38:06.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2024-04-25T02:38:06.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/e60ed42d4f8ce590ddefa913945b0063a3cfe69e\"},{\"id\":\"1074a66d1c175351f692d2c2deb5721786d9ec0f\",\"short_id\":\"1074a66d\",\"created_at\":\"2024-04-22T01:21:02.000+02:00\",\"parent_ids\":[\"3daf7ab1310685d649b759f3cbc51bbcb6af1a6b\"],\"title\":\"restore + icon hack\",\"message\":\"restore icon hack\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2024-04-22T01:21:02.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2024-04-22T01:21:02.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/1074a66d1c175351f692d2c2deb5721786d9ec0f\"},{\"id\":\"3daf7ab1310685d649b759f3cbc51bbcb6af1a6b\",\"short_id\":\"3daf7ab1\",\"created_at\":\"2024-04-22T00:51:36.000+02:00\",\"parent_ids\":[\"cdc4b919cbad1ad11178cc6896d4ef5336b6cb92\"],\"title\":\"Use + correct version of tdlib\",\"message\":\"Use correct version of + tdlib\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2024-04-22T00:51:36.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2024-04-22T00:51:36.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/3daf7ab1310685d649b759f3cbc51bbcb6af1a6b\"},{\"id\":\"cdc4b919cbad1ad11178cc6896d4ef5336b6cb92\",\"short_id\":\"cdc4b919\",\"created_at\":\"2024-04-21T20:33:25.000+02:00\",\"parent_ids\":[\"4511184f88954425f85a160a7dd75ad4df70af01\"],\"title\":\"Fix + teleports\",\"message\":\"Fix teleports\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2024-04-21T20:33:25.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2024-04-21T20:33:25.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/cdc4b919cbad1ad11178cc6896d4ef5336b6cb92\"},{\"id\":\"4511184f88954425f85a160a7dd75ad4df70af01\",\"short_id\":\"4511184f\",\"created_at\":\"2024-04-21T20:15:03.000+02:00\",\"parent_ids\":[\"6af7031b975e358db16c05212b2858b41e7b9f7f\"],\"title\":\"Make + everything build again\",\"message\":\"Make everything build + again\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2024-04-21T20:13:35.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2024-04-21T20:15:03.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/4511184f88954425f85a160a7dd75ad4df70af01\"},{\"id\":\"6af7031b975e358db16c05212b2858b41e7b9f7f\",\"short_id\":\"6af7031b\",\"created_at\":\"2022-05-08T14:13:38.000+02:00\",\"parent_ids\":[\"307fa40dd86624b45d7f427748b834667d8e9f47\"],\"title\":\"Make + everything build again\",\"message\":\"Make everything build + again\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2022-05-08T14:13:38.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2022-05-08T14:13:38.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/6af7031b975e358db16c05212b2858b41e7b9f7f\"},{\"id\":\"307fa40dd86624b45d7f427748b834667d8e9f47\",\"short_id\":\"307fa40d\",\"created_at\":\"2021-12-07T15:57:13.000+01:00\",\"parent_ids\":[\"c8e20da408148a5a885c057c693e18fc58b5c430\"],\"title\":\"Fix + teleports build\",\"message\":\"Fix teleports + build\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-12-07T15:55:24.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-12-07T15:57:13.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/307fa40dd86624b45d7f427748b834667d8e9f47\"},{\"id\":\"c8e20da408148a5a885c057c693e18fc58b5c430\",\"short_id\":\"c8e20da4\",\"created_at\":\"2021-11-04T21:51:47.000+01:00\",\"parent_ids\":[\"858fc58c9704a52f3be0ed9c548172c034caa1b5\"],\"title\":\"CI: + Also add flathub when building apps\",\"message\":\"CI: Also add flathub when + building apps\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-11-04T21:51:47.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-11-04T21:51:47.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/c8e20da408148a5a885c057c693e18fc58b5c430\"},{\"id\":\"858fc58c9704a52f3be0ed9c548172c034caa1b5\",\"short_id\":\"858fc58c\",\"created_at\":\"2021-11-04T12:07:54.000+01:00\",\"parent_ids\":[\"5f07219e5de859e7dc2a5337963488429a23e207\"],\"title\":\"Fix + CI setup for QtWebEngine baseapp\",\"message\":\"Fix CI setup for QtWebEngine + baseapp\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-11-04T12:07:54.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-11-04T12:07:54.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/858fc58c9704a52f3be0ed9c548172c034caa1b5\"},{\"id\":\"5f07219e5de859e7dc2a5337963488429a23e207\",\"short_id\":\"5f07219e\",\"created_at\":\"2021-11-03T15:37:42.000+01:00\",\"parent_ids\":[\"057d482c8c2fbeea5869d50148dbe2538bd90d4d\"],\"title\":\"Fix + up apps\",\"message\":\"Fix up apps\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-11-03T15:37:42.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-11-03T15:37:42.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/5f07219e5de859e7dc2a5337963488429a23e207\"},{\"id\":\"057d482c8c2fbeea5869d50148dbe2538bd90d4d\",\"short_id\":\"057d482c\",\"created_at\":\"2021-06-25T03:15:31.000+02:00\",\"parent_ids\":[\"454f911b707d39d1668dc0549873d8995caacc88\"],\"title\":\"CI: + build on every push again\",\"message\":\"CI: build on every push + again\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-25T03:15:31.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-25T03:15:31.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/057d482c8c2fbeea5869d50148dbe2538bd90d4d\"},{\"id\":\"454f911b707d39d1668dc0549873d8995caacc88\",\"short_id\":\"454f911b\",\"created_at\":\"2021-06-25T00:29:36.000+02:00\",\"parent_ids\":[\"d1db2f6b506e2f278a2c8dc2a1047e990dea7aee\"],\"title\":\"Commit + missing patch\",\"message\":\"Commit missing + patch\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-25T00:29:36.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-25T00:29:36.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/454f911b707d39d1668dc0549873d8995caacc88\"},{\"id\":\"d1db2f6b506e2f278a2c8dc2a1047e990dea7aee\",\"short_id\":\"d1db2f6b\",\"created_at\":\"2021-06-24T21:11:53.000+02:00\",\"parent_ids\":[\"8788b9b3a5b02388cc64ce8466fb45897cc89504\"],\"title\":\"Always + build runtime\",\"message\":\"Always build + runtime\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-24T21:11:53.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-24T21:11:53.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/d1db2f6b506e2f278a2c8dc2a1047e990dea7aee\"},{\"id\":\"8788b9b3a5b02388cc64ce8466fb45897cc89504\",\"short_id\":\"8788b9b3\",\"created_at\":\"2021-06-24T21:08:41.000+02:00\",\"parent_ids\":[\"5486243c6c2fca6a16b6c03f68bbd6c0ae2cfde1\"],\"title\":\"Add + new teleports dependencies\",\"message\":\"Add new teleports + dependencies\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-24T21:08:41.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-24T21:08:41.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/8788b9b3a5b02388cc64ce8466fb45897cc89504\"},{\"id\":\"5486243c6c2fca6a16b6c03f68bbd6c0ae2cfde1\",\"short_id\":\"5486243c\",\"created_at\":\"2021-06-24T13:53:20.000+02:00\",\"parent_ids\":[\"60ae602589275a88ad9309e19529488ec4f84970\"],\"title\":\"ci: + Only run job if sspecific files changed\",\"message\":\"ci: Only run job if + sspecific files changed\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-24T13:53:20.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-24T13:53:20.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/5486243c6c2fca6a16b6c03f68bbd6c0ae2cfde1\"},{\"id\":\"60ae602589275a88ad9309e19529488ec4f84970\",\"short_id\":\"60ae6025\",\"created_at\":\"2021-06-24T13:16:43.000+02:00\",\"parent_ids\":[\"97fa163b99ee045e3e92e0f5b09299d747d1fe81\"],\"title\":\"Rebase + teleports patch\",\"message\":\"Rebase teleports + patch\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-24T13:16:43.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-24T13:16:43.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/60ae602589275a88ad9309e19529488ec4f84970\"},{\"id\":\"97fa163b99ee045e3e92e0f5b09299d747d1fe81\",\"short_id\":\"97fa163b\",\"created_at\":\"2021-06-23T23:07:40.000+02:00\",\"parent_ids\":[\"451c7a6afcee9bfdb0ee52940f953d2c19cb378a\"],\"title\":\"Build + teleports with only one thread\",\"message\":\"Build teleports with only one + thread\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-23T23:07:40.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-23T23:07:40.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/97fa163b99ee045e3e92e0f5b09299d747d1fe81\"},{\"id\":\"451c7a6afcee9bfdb0ee52940f953d2c19cb378a\",\"short_id\":\"451c7a6a\",\"created_at\":\"2021-06-23T12:08:29.000+02:00\",\"parent_ids\":[\"de8a4f72f39f4fb3d50d9a5e13621f57d7e5fd2b\"],\"title\":\"ci: + Also build teleports\",\"message\":\"ci: Also build + teleports\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-23T12:08:29.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-23T12:08:29.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/451c7a6afcee9bfdb0ee52940f953d2c19cb378a\"},{\"id\":\"de8a4f72f39f4fb3d50d9a5e13621f57d7e5fd2b\",\"short_id\":\"de8a4f72\",\"created_at\":\"2021-06-22T16:13:16.000+02:00\",\"parent_ids\":[\"67ea66ac0ea5c88649563a9b17c2af6fc762408c\"],\"title\":\"Disable + leveldb test\",\"message\":\"Disable leveldb test\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-22T16:13:16.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-22T16:13:16.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/de8a4f72f39f4fb3d50d9a5e13621f57d7e5fd2b\"},{\"id\":\"67ea66ac0ea5c88649563a9b17c2af6fc762408c\",\"short_id\":\"67ea66ac\",\"created_at\":\"2021-06-22T15:37:18.000+02:00\",\"parent_ids\":[\"677af3a4ba630a93c2da40cdcb2a58585dc426ec\"],\"title\":\"Avoid + building the uuitk tests\",\"message\":\"Avoid building the uuitk + tests\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-22T15:37:18.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-22T15:37:18.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/67ea66ac0ea5c88649563a9b17c2af6fc762408c\"},{\"id\":\"677af3a4ba630a93c2da40cdcb2a58585dc426ec\",\"short_id\":\"677af3a4\",\"created_at\":\"2021-06-22T13:27:56.000+02:00\",\"parent_ids\":[\"813df2e3f6466909da705cb9d59b4823caeec1b5\"],\"title\":\"Pin + packages not made by ubports to specific commits\",\"message\":\"Pin packages + not made by ubports to specific commits\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-22T13:27:56.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-22T13:27:56.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/677af3a4ba630a93c2da40cdcb2a58585dc426ec\"},{\"id\":\"813df2e3f6466909da705cb9d59b4823caeec1b5\",\"short_id\":\"813df2e3\",\"created_at\":\"2021-06-22T04:26:03.000+02:00\",\"parent_ids\":[\"7013a22bba894298ad650df8a76dd1e99f4d38b9\"],\"title\":\"ci: + Fix apps cache path\",\"message\":\"ci: Fix apps cache + path\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-22T04:26:03.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-22T04:26:03.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/813df2e3f6466909da705cb9d59b4823caeec1b5\"},{\"id\":\"7013a22bba894298ad650df8a76dd1e99f4d38b9\",\"short_id\":\"7013a22b\",\"created_at\":\"2021-06-21T18:52:56.000+02:00\",\"parent_ids\":[\"797f134ef0db290e8f86923d2925495f1b248b03\"],\"title\":\"Remove + x86 specific from filemanager\",\"message\":\"Remove x86 specific from + filemanager\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T18:52:56.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T18:52:56.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/7013a22bba894298ad650df8a76dd1e99f4d38b9\"},{\"id\":\"797f134ef0db290e8f86923d2925495f1b248b03\",\"short_id\":\"797f134e\",\"created_at\":\"2021-06-21T15:14:51.000+02:00\",\"parent_ids\":[\"4d8b24f2f2aa5eb42b673fdb7e27dfadf3f2a7e9\"],\"title\":\"Clean + up examples from u1db\",\"message\":\"Clean up examples from + u1db\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T15:14:19.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T15:14:51.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/797f134ef0db290e8f86923d2925495f1b248b03\"},{\"id\":\"4d8b24f2f2aa5eb42b673fdb7e27dfadf3f2a7e9\",\"short_id\":\"4d8b24f2\",\"created_at\":\"2021-06-21T15:06:25.000+02:00\",\"parent_ids\":[\"d810f421d7264fdea797e7712b7e259acaa3202f\"],\"title\":\"Disable + tests for ubuntu-ui-extras\",\"message\":\"Disable tests for + ubuntu-ui-extras\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T15:06:25.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T15:06:25.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/4d8b24f2f2aa5eb42b673fdb7e27dfadf3f2a7e9\"},{\"id\":\"d810f421d7264fdea797e7712b7e259acaa3202f\",\"short_id\":\"d810f421\",\"created_at\":\"2021-06-21T15:05:44.000+02:00\",\"parent_ids\":[\"f9d05c650f1b4e62ed0a3e34735ad36a30c75a92\"],\"title\":\"Clean + up python tests installed by uuitk\",\"message\":\"Clean up python tests + installed by uuitk\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T15:05:44.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T15:05:44.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/d810f421d7264fdea797e7712b7e259acaa3202f\"},{\"id\":\"f9d05c650f1b4e62ed0a3e34735ad36a30c75a92\",\"short_id\":\"f9d05c65\",\"created_at\":\"2021-06-21T12:59:29.000+02:00\",\"parent_ids\":[\"5d8a2fcedd8b1d3a045fb896cde8f6ab8adf67f4\"],\"title\":\"Add + ubports remote before using it\",\"message\":\"Add ubports remote before using + it\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T12:59:29.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T12:59:29.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/f9d05c650f1b4e62ed0a3e34735ad36a30c75a92\"},{\"id\":\"5d8a2fcedd8b1d3a045fb896cde8f6ab8adf67f4\",\"short_id\":\"5d8a2fce\",\"created_at\":\"2021-06-21T12:17:43.000+02:00\",\"parent_ids\":[\"2dcde28a97dc5ad512c6178ef6d7f130898ff31a\"],\"title\":\"Remove + thumbnailer demon binary from runtime\",\"message\":\"Remove thumbnailer demon + binary from runtime\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T12:17:43.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T12:17:43.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/5d8a2fcedd8b1d3a045fb896cde8f6ab8adf67f4\"},{\"id\":\"2dcde28a97dc5ad512c6178ef6d7f130898ff31a\",\"short_id\":\"2dcde28a\",\"created_at\":\"2021-06-21T10:25:51.000+02:00\",\"parent_ids\":[\"fd32daf5f4c1c6f5f5fdb4562ff23f8b86102432\"],\"title\":\"Add + info about CI to the README\",\"message\":\"Add info about CI to the + README\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T10:25:51.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T10:25:51.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/2dcde28a97dc5ad512c6178ef6d7f130898ff31a\"},{\"id\":\"fd32daf5f4c1c6f5f5fdb4562ff23f8b86102432\",\"short_id\":\"fd32daf5\",\"created_at\":\"2021-06-21T10:23:25.000+02:00\",\"parent_ids\":[\"1bdc0e37fe4ad3f10b42ba22f5491b75701ec4ec\"],\"title\":\"libnih: + Run autoreconf before building\",\"message\":\"libnih: Run autoreconf before + building\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T07:28:00.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T10:23:25.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/fd32daf5f4c1c6f5f5fdb4562ff23f8b86102432\"},{\"id\":\"1bdc0e37fe4ad3f10b42ba22f5491b75701ec4ec\",\"short_id\":\"1bdc0e37\",\"created_at\":\"2021-06-21T10:23:25.000+02:00\",\"parent_ids\":[\"a77a87c18231adb88c6e2b32cb1dcf6a66beaa50\"],\"title\":\"Install + eatmydata earlier\",\"message\":\"Install eatmydata + earlier\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T01:46:21.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T10:23:25.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/1bdc0e37fe4ad3f10b42ba22f5491b75701ec4ec\"},{\"id\":\"a77a87c18231adb88c6e2b32cb1dcf6a66beaa50\",\"short_id\":\"a77a87c1\",\"created_at\":\"2021-06-21T10:23:25.000+02:00\",\"parent_ids\":[\"c8f290412cca7be30cd24f894c673c7e4fa32e61\"],\"title\":\"Speed + up builds by not synching changes to disk so often\",\"message\":\"Speed up + builds by not synching changes to disk so often\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-21T01:41:54.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T10:23:25.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a77a87c18231adb88c6e2b32cb1dcf6a66beaa50\"},{\"id\":\"c8f290412cca7be30cd24f894c673c7e4fa32e61\",\"short_id\":\"c8f29041\",\"created_at\":\"2021-06-21T10:23:24.000+02:00\",\"parent_ids\":[\"cb6aa7927fb3769f97f162a4305cc710930aacf0\"],\"title\":\"Build + on my Raspberry Pi (arm64 only)\",\"message\":\"Build on my Raspberry Pi + (arm64 only)\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-20T22:02:11.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T10:23:24.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/c8f290412cca7be30cd24f894c673c7e4fa32e61\"},{\"id\":\"cb6aa7927fb3769f97f162a4305cc710930aacf0\",\"short_id\":\"cb6aa792\",\"created_at\":\"2021-06-21T10:23:20.000+02:00\",\"parent_ids\":[\"cddbf7e6dc4efe9645972d7092202578c26a4047\"],\"title\":\"Only + add remotes if they don't exist\",\"message\":\"Only add remotes if they don't + exist\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-02-03T00:17:50.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-21T10:23:20.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/cb6aa7927fb3769f97f162a4305cc710930aacf0\"},{\"id\":\"cddbf7e6dc4efe9645972d7092202578c26a4047\",\"short_id\":\"cddbf7e6\",\"created_at\":\"2021-06-20T19:51:00.000+00:00\",\"parent_ids\":[\"916cf040ab6bf0b167c26653617d537e13136271\"],\"title\":\"Update + README.md\",\"message\":\"Update + README.md\",\"author_name\":\"EspiDev\",\"author_email\":\"espidev@gmail.com\",\"authored_date\":\"2021-06-20T19:51:00.000+00:00\",\"committer_name\":\"EspiDev\",\"committer_email\":\"espidev@gmail.com\",\"committed_date\":\"2021-06-20T19:51:00.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/cddbf7e6dc4efe9645972d7092202578c26a4047\"},{\"id\":\"916cf040ab6bf0b167c26653617d537e13136271\",\"short_id\":\"916cf040\",\"created_at\":\"2021-06-20T19:37:22.000+00:00\",\"parent_ids\":[\"57b6c656536e21210ee2072b0b7a71f03672cdad\"],\"title\":\"Add + local build instructions\",\"message\":\"Add local build + instructions\",\"author_name\":\"EspiDev\",\"author_email\":\"espidev@gmail.com\",\"authored_date\":\"2021-06-20T19:37:22.000+00:00\",\"committer_name\":\"EspiDev\",\"committer_email\":\"espidev@gmail.com\",\"committed_date\":\"2021-06-20T19:37:22.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/916cf040ab6bf0b167c26653617d537e13136271\"},{\"id\":\"57b6c656536e21210ee2072b0b7a71f03672cdad\",\"short_id\":\"57b6c656\",\"created_at\":\"2021-06-18T15:43:31.000+02:00\",\"parent_ids\":[\"4062c75dd31cc96d10f33207c7e8999e8ca8afcf\"],\"title\":\"Add + thumbnailer as own package\",\"message\":\"Add thumbnailer as own + package\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T15:43:19.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T15:43:31.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/57b6c656536e21210ee2072b0b7a71f03672cdad\"},{\"id\":\"4062c75dd31cc96d10f33207c7e8999e8ca8afcf\",\"short_id\":\"4062c75d\",\"created_at\":\"2021-06-18T15:41:33.000+02:00\",\"parent_ids\":[\"927c0cc0b4200489b4ae640432e7b5ae2fcfa714\"],\"title\":\"teleports: + Use QApplication to make it compatible with Content + stub\",\"message\":\"teleports: Use QApplication to make it compatible with + Content stub\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T15:41:33.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T15:41:33.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/4062c75dd31cc96d10f33207c7e8999e8ca8afcf\"},{\"id\":\"927c0cc0b4200489b4ae640432e7b5ae2fcfa714\",\"short_id\":\"927c0cc0\",\"created_at\":\"2021-06-18T13:23:27.000+02:00\",\"parent_ids\":[\"65da1875bc4fe12b749dc765b6c602e23e868a28\"],\"title\":\"Make + the platform provide the thumbnailer dbus service\",\"message\":\"Make the + platform provide the thumbnailer dbus service\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T13:23:27.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T13:23:27.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/927c0cc0b4200489b4ae640432e7b5ae2fcfa714\"},{\"id\":\"65da1875bc4fe12b749dc765b6c602e23e868a28\",\"short_id\":\"65da1875\",\"created_at\":\"2021-06-18T04:54:51.000+02:00\",\"parent_ids\":[\"d42133427b4c93efeb0e6d7698ce0b9feda1c329\"],\"title\":\"Switch + to ubports repository for persistent-cache-cpp\",\"message\":\"Switch to + ubports repository for persistent-cache-cpp\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T04:54:51.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T04:54:51.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/65da1875bc4fe12b749dc765b6c602e23e868a28\"},{\"id\":\"d42133427b4c93efeb0e6d7698ce0b9feda1c329\",\"short_id\":\"d4213342\",\"created_at\":\"2021-06-18T04:44:18.000+02:00\",\"parent_ids\":[\"2c30cd3bfd96cef1982320a41f2c7df4ef00277e\"],\"title\":\"Fix + taglib prefix\",\"message\":\"Fix taglib prefix\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T04:44:18.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T04:44:18.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/d42133427b4c93efeb0e6d7698ce0b9feda1c329\"},{\"id\":\"2c30cd3bfd96cef1982320a41f2c7df4ef00277e\",\"short_id\":\"2c30cd3b\",\"created_at\":\"2021-06-18T04:42:42.000+02:00\",\"parent_ids\":[\"b2a60cb37414c89fd167fae09b71c62cc628dc6e\"],\"title\":\"Fix + taglib install location\",\"message\":\"Fix taglib install + location\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T04:42:42.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T04:42:42.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/2c30cd3bfd96cef1982320a41f2c7df4ef00277e\"},{\"id\":\"b2a60cb37414c89fd167fae09b71c62cc628dc6e\",\"short_id\":\"b2a60cb3\",\"created_at\":\"2021-06-18T04:26:28.000+02:00\",\"parent_ids\":[\"a78b731494a4991df01864a073ecf5d7742f2cfd\"],\"title\":\"Gallery: + provide thumbnailer dbus service\",\"message\":\"Gallery: provide thumbnailer + dbus service\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T04:26:15.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T04:26:28.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/b2a60cb37414c89fd167fae09b71c62cc628dc6e\"},{\"id\":\"a78b731494a4991df01864a073ecf5d7742f2cfd\",\"short_id\":\"a78b7314\",\"created_at\":\"2021-06-18T04:05:36.000+02:00\",\"parent_ids\":[\"c6075a7c2bee38a53ff4c38090d489b99682f98f\"],\"title\":\"Install + boost into the correct directory\",\"message\":\"Install boost into the + correct directory\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T04:05:36.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T04:05:36.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a78b731494a4991df01864a073ecf5d7742f2cfd\"},{\"id\":\"c6075a7c2bee38a53ff4c38090d489b99682f98f\",\"short_id\":\"c6075a7c\",\"created_at\":\"2021-06-18T02:32:13.000+02:00\",\"parent_ids\":[\"ec1cc73b967ffa5605785889cd1c59ab499f5b20\"],\"title\":\"Fix + filemanager build\",\"message\":\"Fix filemanager build\\n\\nStill doesn't + run, something is wrong with the thumnnailer\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-18T01:39:32.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-18T02:32:13.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/c6075a7c2bee38a53ff4c38090d489b99682f98f\"},{\"id\":\"ec1cc73b967ffa5605785889cd1c59ab499f5b20\",\"short_id\":\"ec1cc73b\",\"created_at\":\"2021-06-17T17:01:19.000+02:00\",\"parent_ids\":[\"307f3edae49b5b30765f5a854dd5d85f1132e39f\"],\"title\":\"README: + Add screenshot\",\"message\":\"README: Add + screenshot\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-17T17:00:37.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-17T17:01:19.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/ec1cc73b967ffa5605785889cd1c59ab499f5b20\"},{\"id\":\"307f3edae49b5b30765f5a854dd5d85f1132e39f\",\"short_id\":\"307f3eda\",\"created_at\":\"2021-06-17T12:14:30.000+00:00\",\"parent_ids\":[\"a053e8f7526f4ee00a270f45dde0d86fd8ca0f60\"],\"title\":\"Update + teleports patches\",\"message\":\"Update teleports + patches\\n\",\"author_name\":\"Nicolas + Fella\",\"author_email\":\"nicolas.fella@gmx.de\",\"authored_date\":\"2021-04-11T17:54:28.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-17T12:14:30.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/307f3edae49b5b30765f5a854dd5d85f1132e39f\"},{\"id\":\"a053e8f7526f4ee00a270f45dde0d86fd8ca0f60\",\"short_id\":\"a053e8f7\",\"created_at\":\"2021-06-17T00:57:08.000+02:00\",\"parent_ids\":[\"647678ef70a80ea03474590134908211bb1f4bc1\"],\"title\":\"Switch + to new Content Stub location\",\"message\":\"Switch to new Content Stub + location\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-17T00:57:08.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-17T00:57:08.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a053e8f7526f4ee00a270f45dde0d86fd8ca0f60\"},{\"id\":\"647678ef70a80ea03474590134908211bb1f4bc1\",\"short_id\":\"647678ef\",\"created_at\":\"2021-06-15T22:05:02.000+02:00\",\"parent_ids\":[\"1bacb21933a7e9fb2ee5e1324e13c4dd59a11cf6\"],\"title\":\"Update + urls of some repositories that were moved to GitLab\",\"message\":\"Update + urls of some repositories that were moved to + GitLab\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-15T22:05:02.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-15T22:05:02.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/647678ef70a80ea03474590134908211bb1f4bc1\"},{\"id\":\"1bacb21933a7e9fb2ee5e1324e13c4dd59a11cf6\",\"short_id\":\"1bacb219\",\"created_at\":\"2021-06-15T21:12:03.000+02:00\",\"parent_ids\":[\"9467f83f619dd9968e2934a4b255ec6b0f14b050\"],\"title\":\"Fix + gallery app build\",\"message\":\"Fix gallery app + build\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-15T21:11:29.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-15T21:12:03.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/1bacb21933a7e9fb2ee5e1324e13c4dd59a11cf6\"},{\"id\":\"9467f83f619dd9968e2934a4b255ec6b0f14b050\",\"short_id\":\"9467f83f\",\"created_at\":\"2021-06-15T19:02:14.000+00:00\",\"parent_ids\":[\"8c5f5bbb87fc340d4cd0da03533c1f426cf78ccc\",\"f00c737b3a5b115acd7f15b73962f11092dfe67d\"],\"title\":\"Merge + branch 'update-5-15-ng' into 'master'\",\"message\":\"Merge branch + 'update-5-15-ng' into 'master'\\n\\nUpdate runtime to 5.15\\n\\nSee merge + request + ubports/core/flatpak/ubuntu-touch-flatpak-runtime!10\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-15T19:02:14.000+00:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-15T19:02:14.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/9467f83f619dd9968e2934a4b255ec6b0f14b050\"},{\"id\":\"f00c737b3a5b115acd7f15b73962f11092dfe67d\",\"short_id\":\"f00c737b\",\"created_at\":\"2021-06-15T17:07:19.000+02:00\",\"parent_ids\":[\"68c19bf4a76d17d0f172bc4a4d3b36324444ffba\"],\"title\":\"Update + apps to 5.15\",\"message\":\"Update apps to 5.15\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-15T17:07:19.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-15T17:07:19.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/f00c737b3a5b115acd7f15b73962f11092dfe67d\"},{\"id\":\"68c19bf4a76d17d0f172bc4a4d3b36324444ffba\",\"short_id\":\"68c19bf4\",\"created_at\":\"2021-06-15T15:31:16.000+02:00\",\"parent_ids\":[\"3c0eee9776a9c9632f64750e3d293408d5c0c449\"],\"title\":\"Update + runtime to 5.15\",\"message\":\"Update runtime to + 5.15\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-06-15T15:30:53.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-06-15T15:31:16.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/68c19bf4a76d17d0f172bc4a4d3b36324444ffba\"},{\"id\":\"8c5f5bbb87fc340d4cd0da03533c1f426cf78ccc\",\"short_id\":\"8c5f5bbb\",\"created_at\":\"2021-06-15T12:46:13.000+00:00\",\"parent_ids\":[\"d9370a8191f5a281fc2274aa8e38d6f64a0487ce\",\"2f7f0f191ed5d9fded2c3665d4feb5fdc8365c03\"],\"title\":\"Merge + branch 'EspiDev-master-patch-28322' into 'master'\",\"message\":\"Merge branch + 'EspiDev-master-patch-28322' into 'master'\\n\\nUpdate quick-memo + checksum\\n\\nSee merge request + ubports/core/flatpak/ubuntu-touch-flatpak-runtime!8\",\"author_name\":\"EspiDev\",\"author_email\":\"espidev@gmail.com\",\"authored_date\":\"2021-06-15T12:46:13.000+00:00\",\"committer_name\":\"EspiDev\",\"committer_email\":\"espidev@gmail.com\",\"committed_date\":\"2021-06-15T12:46:13.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/8c5f5bbb87fc340d4cd0da03533c1f426cf78ccc\"},{\"id\":\"d9370a8191f5a281fc2274aa8e38d6f64a0487ce\",\"short_id\":\"d9370a81\",\"created_at\":\"2021-06-15T01:22:49.000+00:00\",\"parent_ids\":[\"3c0eee9776a9c9632f64750e3d293408d5c0c449\"],\"title\":\"Update + repo url in readme\",\"message\":\"Update repo url in + readme\",\"author_name\":\"EspiDev\",\"author_email\":\"espidev@gmail.com\",\"authored_date\":\"2021-06-15T01:22:49.000+00:00\",\"committer_name\":\"EspiDev\",\"committer_email\":\"espidev@gmail.com\",\"committed_date\":\"2021-06-15T01:22:49.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/d9370a8191f5a281fc2274aa8e38d6f64a0487ce\"},{\"id\":\"2f7f0f191ed5d9fded2c3665d4feb5fdc8365c03\",\"short_id\":\"2f7f0f19\",\"created_at\":\"2021-06-15T01:05:58.000+00:00\",\"parent_ids\":[\"3c0eee9776a9c9632f64750e3d293408d5c0c449\"],\"title\":\"Update + quick-memo checksum\",\"message\":\"Update quick-memo + checksum\",\"author_name\":\"EspiDev\",\"author_email\":\"espidev@gmail.com\",\"authored_date\":\"2021-06-15T01:05:58.000+00:00\",\"committer_name\":\"EspiDev\",\"committer_email\":\"espidev@gmail.com\",\"committed_date\":\"2021-06-15T01:05:58.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/2f7f0f191ed5d9fded2c3665d4feb5fdc8365c03\"},{\"id\":\"3c0eee9776a9c9632f64750e3d293408d5c0c449\",\"short_id\":\"3c0eee97\",\"created_at\":\"2021-06-14T01:04:12.000+02:00\",\"parent_ids\":[\"4067f42495973ecc03c92f8721ef6b72de8e3954\"],\"title\":\"Fix + compilation\",\"message\":\"Fix compilation\\n\",\"author_name\":\"Tobias + Fella\",\"author_email\":\"fella@posteo.de\",\"authored_date\":\"2021-06-14T01:04:12.000+02:00\",\"committer_name\":\"Tobias + Fella\",\"committer_email\":\"fella@posteo.de\",\"committed_date\":\"2021-06-14T01:04:12.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/3c0eee9776a9c9632f64750e3d293408d5c0c449\"},{\"id\":\"4067f42495973ecc03c92f8721ef6b72de8e3954\",\"short_id\":\"4067f424\",\"created_at\":\"2021-03-25T01:47:44.000+00:00\",\"parent_ids\":[\"7f25fdc62c3e01513abd7b9fc1f4bf3985487573\",\"b5ca25b7314098297dbe01cdac471315be9414a2\"],\"title\":\"Merge + branch 'teleports' into 'master'\",\"message\":\"Merge branch 'teleports' into + 'master'\\n\\nUpdate teleports patches\\n\\nSee merge request + ubports/core/flatpak/ubuntu-touch-flatpak-runtime!5\",\"author_name\":\"Marius + Gripsgard\",\"author_email\":\"marius@ubports.com\",\"authored_date\":\"2021-03-25T01:47:44.000+00:00\",\"committer_name\":\"Marius + Gripsgard\",\"committer_email\":\"marius@ubports.com\",\"committed_date\":\"2021-03-25T01:47:44.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/4067f42495973ecc03c92f8721ef6b72de8e3954\"},{\"id\":\"b5ca25b7314098297dbe01cdac471315be9414a2\",\"short_id\":\"b5ca25b7\",\"created_at\":\"2021-03-21T22:43:18.000+01:00\",\"parent_ids\":[\"7f25fdc62c3e01513abd7b9fc1f4bf3985487573\"],\"title\":\"Update + teleports patches\",\"message\":\"Update teleports + patches\\n\",\"author_name\":\"Nicolas + Fella\",\"author_email\":\"nicolas.fella@gmx.de\",\"authored_date\":\"2021-03-21T22:43:18.000+01:00\",\"committer_name\":\"Nicolas + Fella\",\"committer_email\":\"nicolas.fella@gmx.de\",\"committed_date\":\"2021-03-21T22:43:18.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/b5ca25b7314098297dbe01cdac471315be9414a2\"},{\"id\":\"7f25fdc62c3e01513abd7b9fc1f4bf3985487573\",\"short_id\":\"7f25fdc6\",\"created_at\":\"2021-01-28T23:20:58.000+01:00\",\"parent_ids\":[\"66222f27d73cf48226a8f68595a56da1cc07590d\"],\"title\":\"CI: + Install xz-utils\",\"message\":\"CI: Install + xz-utils\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-28T23:20:58.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-28T23:20:58.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/7f25fdc62c3e01513abd7b9fc1f4bf3985487573\"},{\"id\":\"66222f27d73cf48226a8f68595a56da1cc07590d\",\"short_id\":\"66222f27\",\"created_at\":\"2021-01-28T22:45:03.000+01:00\",\"parent_ids\":[\"b29c48995aa8a8e2bf20ea3cebd9139408967006\"],\"title\":\"Clean + up Sdk\",\"message\":\"Clean up Sdk\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-28T22:45:03.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-28T22:45:03.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/66222f27d73cf48226a8f68595a56da1cc07590d\"},{\"id\":\"b29c48995aa8a8e2bf20ea3cebd9139408967006\",\"short_id\":\"b29c4899\",\"created_at\":\"2021-01-28T14:40:02.000+01:00\",\"parent_ids\":[\"a2a5e5b1f1cb9da2066087a48dfb01f61a4e930d\"],\"title\":\"Fix + thumbnailer install path\",\"message\":\"Fix thumbnailer install + path\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-28T14:40:02.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-28T14:40:02.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/b29c48995aa8a8e2bf20ea3cebd9139408967006\"},{\"id\":\"a2a5e5b1f1cb9da2066087a48dfb01f61a4e930d\",\"short_id\":\"a2a5e5b1\",\"created_at\":\"2021-01-28T12:15:52.000+01:00\",\"parent_ids\":[\"a9ac306897e9ce2018d5f882cc09db55c8cc1089\"],\"title\":\"Package + filemanager\",\"message\":\"Package filemanager\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-28T12:13:08.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-28T12:15:52.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a2a5e5b1f1cb9da2066087a48dfb01f61a4e930d\"},{\"id\":\"a9ac306897e9ce2018d5f882cc09db55c8cc1089\",\"short_id\":\"a9ac3068\",\"created_at\":\"2021-01-28T02:51:52.000+01:00\",\"parent_ids\":[\"26f0ea1a8c1f77d91247044a0481dea1de243cad\"],\"title\":\"Package + gallery\",\"message\":\"Package gallery\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-28T02:50:37.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-28T02:51:52.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a9ac306897e9ce2018d5f882cc09db55c8cc1089\"},{\"id\":\"26f0ea1a8c1f77d91247044a0481dea1de243cad\",\"short_id\":\"26f0ea1a\",\"created_at\":\"2021-01-27T22:10:24.000+01:00\",\"parent_ids\":[\"57c573cb0a407f62be8d60daa5f902a7c1041a06\"],\"title\":\"teleports: + Clean up leftover build files\",\"message\":\"teleports: Clean up leftover + build files\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-27T22:10:24.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-27T22:10:24.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/26f0ea1a8c1f77d91247044a0481dea1de243cad\"},{\"id\":\"57c573cb0a407f62be8d60daa5f902a7c1041a06\",\"short_id\":\"57c573cb\",\"created_at\":\"2021-01-27T20:14:47.000+00:00\",\"parent_ids\":[\"a78fb4428c314c27a4cf3177bbcd45b37a4988da\",\"78f4fa2dcbd12d1f94f27669362262b58a889f71\"],\"title\":\"Merge + branch 'work/tdlibversion' into 'master'\",\"message\":\"Merge branch + 'work/tdlibversion' into 'master'\\n\\nUse 1.6 of tdlib\\n\\nSee merge request + JBBgameich/ubuntu-touch-flatpak-runtime!3\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb@kaidan.im\",\"authored_date\":\"2021-01-27T20:14:47.000+00:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb@kaidan.im\",\"committed_date\":\"2021-01-27T20:14:47.000+00:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/57c573cb0a407f62be8d60daa5f902a7c1041a06\"},{\"id\":\"a78fb4428c314c27a4cf3177bbcd45b37a4988da\",\"short_id\":\"a78fb442\",\"created_at\":\"2021-01-27T17:47:29.000+01:00\",\"parent_ids\":[\"185fb23642b30b024a2b38195c4311addda696da\"],\"title\":\"Enable + content hub in teleports\",\"message\":\"Enable content hub in + teleports\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-27T17:47:07.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-27T17:47:29.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a78fb4428c314c27a4cf3177bbcd45b37a4988da\"},{\"id\":\"78f4fa2dcbd12d1f94f27669362262b58a889f71\",\"short_id\":\"78f4fa2d\",\"created_at\":\"2021-01-26T21:18:44.000+01:00\",\"parent_ids\":[\"cb00500013c98968fefbc21be9e20957d2f3d56d\"],\"title\":\"Use + 1.6 of tdlib\",\"message\":\"Use 1.6 of tdlib\\n\\nFixes showing the message + sender's names\\n\",\"author_name\":\"Tobias + Fella\",\"author_email\":\"fella@posteo.de\",\"authored_date\":\"2021-01-26T21:18:44.000+01:00\",\"committer_name\":\"Tobias + Fella\",\"committer_email\":\"fella@posteo.de\",\"committed_date\":\"2021-01-26T21:18:44.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/78f4fa2dcbd12d1f94f27669362262b58a889f71\"},{\"id\":\"185fb23642b30b024a2b38195c4311addda696da\",\"short_id\":\"185fb236\",\"created_at\":\"2021-01-26T18:07:08.000+01:00\",\"parent_ids\":[\"149f4594221eed988ddf74f5ebc809f281181ff2\"],\"title\":\"Memo: + Add content hub back\",\"message\":\"Memo: Add content hub + back\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-26T18:07:08.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-26T18:07:08.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/185fb23642b30b024a2b38195c4311addda696da\"},{\"id\":\"149f4594221eed988ddf74f5ebc809f281181ff2\",\"short_id\":\"149f4594\",\"created_at\":\"2021-01-26T18:05:39.000+01:00\",\"parent_ids\":[\"0b1fd92438705a736d757cfad54f277e0cc298b2\"],\"title\":\"Sdk: + Add content-stub\",\"message\":\"Sdk: Add + content-stub\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-26T18:05:39.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-26T18:05:39.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/149f4594221eed988ddf74f5ebc809f281181ff2\"},{\"id\":\"0b1fd92438705a736d757cfad54f277e0cc298b2\",\"short_id\":\"0b1fd924\",\"created_at\":\"2021-01-26T11:41:35.000+01:00\",\"parent_ids\":[\"28d376440f4d6e94abc63b9f56b53dbdbbd80fd6\"],\"title\":\"teleports: + Fix icon\",\"message\":\"teleports: Fix icon\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-26T11:41:35.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-26T11:41:35.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/0b1fd92438705a736d757cfad54f277e0cc298b2\"},{\"id\":\"28d376440f4d6e94abc63b9f56b53dbdbbd80fd6\",\"short_id\":\"28d37644\",\"created_at\":\"2021-01-26T02:30:25.000+01:00\",\"parent_ids\":[\"f5ca806bdc0b5da95cafc597a47aba1ae7f06ada\"],\"title\":\"Update + memo checksum\",\"message\":\"Update memo + checksum\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-26T02:30:25.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-26T02:30:25.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/28d376440f4d6e94abc63b9f56b53dbdbbd80fd6\"},{\"id\":\"f5ca806bdc0b5da95cafc597a47aba1ae7f06ada\",\"short_id\":\"f5ca806b\",\"created_at\":\"2021-01-26T00:42:52.000+01:00\",\"parent_ids\":[\"cb00500013c98968fefbc21be9e20957d2f3d56d\"],\"title\":\"Rebase + clock patch\",\"message\":\"Rebase clock patch\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-26T00:42:52.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-26T00:42:52.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/f5ca806bdc0b5da95cafc597a47aba1ae7f06ada\"},{\"id\":\"cb00500013c98968fefbc21be9e20957d2f3d56d\",\"short_id\":\"cb005000\",\"created_at\":\"2021-01-25T22:03:34.000+01:00\",\"parent_ids\":[\"6ee0db0c0c46bf5f995aa65a1455ed3cb1fd629d\"],\"title\":\"Fix + teleports build with 5.12\",\"message\":\"Fix teleports build with + 5.12\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-25T22:03:34.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-25T22:03:34.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/cb00500013c98968fefbc21be9e20957d2f3d56d\"},{\"id\":\"6ee0db0c0c46bf5f995aa65a1455ed3cb1fd629d\",\"short_id\":\"6ee0db0c\",\"created_at\":\"2021-01-25T19:51:42.000+01:00\",\"parent_ids\":[\"a93439b7683dd40441444ef04a3356d8de007c75\"],\"title\":\"Make + runtime build with Qt 5.12\",\"message\":\"Make runtime build with Qt + 5.12\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2021-01-25T19:51:42.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2021-01-25T19:51:42.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/6ee0db0c0c46bf5f995aa65a1455ed3cb1fd629d\"},{\"id\":\"a93439b7683dd40441444ef04a3356d8de007c75\",\"short_id\":\"a93439b7\",\"created_at\":\"2021-01-24T23:58:19.000+01:00\",\"parent_ids\":[\"c549becaf53018e92ff33480166c099c75913e36\"],\"title\":\"Create + packaging for teleports\",\"message\":\"Create packaging for + teleports\\n\",\"author_name\":\"Tobias + Fella\",\"author_email\":\"fella@posteo.de\",\"authored_date\":\"2021-01-24T23:58:19.000+01:00\",\"committer_name\":\"Tobias + Fella\",\"committer_email\":\"fella@posteo.de\",\"committed_date\":\"2021-01-24T23:58:19.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a93439b7683dd40441444ef04a3356d8de007c75\"},{\"id\":\"c549becaf53018e92ff33480166c099c75913e36\",\"short_id\":\"c549beca\",\"created_at\":\"2021-01-24T23:58:05.000+01:00\",\"parent_ids\":[\"73b054c7e9daa31a82eda1a8542e8356a504f8e0\"],\"title\":\"Update + and fix runtime\",\"message\":\"Update and fix + runtime\\n\",\"author_name\":\"Tobias + Fella\",\"author_email\":\"fella@posteo.de\",\"authored_date\":\"2021-01-24T23:58:05.000+01:00\",\"committer_name\":\"Tobias + Fella\",\"committer_email\":\"fella@posteo.de\",\"committed_date\":\"2021-01-24T23:58:05.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/c549becaf53018e92ff33480166c099c75913e36\"},{\"id\":\"73b054c7e9daa31a82eda1a8542e8356a504f8e0\",\"short_id\":\"73b054c7\",\"created_at\":\"2020-05-13T10:35:05.000+02:00\",\"parent_ids\":[\"5aabb4ce8b9ee1b190cd76da80d43683d193122c\"],\"title\":\"Fix + calculator and weather app icon path\",\"message\":\"Fix calculator and + weather app icon path\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-05-13T10:35:05.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-05-13T10:35:05.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/73b054c7e9daa31a82eda1a8542e8356a504f8e0\"},{\"id\":\"5aabb4ce8b9ee1b190cd76da80d43683d193122c\",\"short_id\":\"5aabb4ce\",\"created_at\":\"2020-05-13T10:26:10.000+02:00\",\"parent_ids\":[\"9d7717acd55af6b13310e7436ec63ee619a65474\"],\"title\":\"ci: + Remove timeout from apps artifacts\",\"message\":\"ci: Remove timeout from + apps artifacts\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-05-13T10:26:10.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-05-13T10:26:10.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/5aabb4ce8b9ee1b190cd76da80d43683d193122c\"},{\"id\":\"9d7717acd55af6b13310e7436ec63ee619a65474\",\"short_id\":\"9d7717ac\",\"created_at\":\"2020-05-13T10:23:42.000+02:00\",\"parent_ids\":[\"dea952fb5d53af66eacd095f81ec79279668fc57\"],\"title\":\"Add + README\",\"message\":\"Add README\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-05-13T10:23:42.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-05-13T10:23:42.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/9d7717acd55af6b13310e7436ec63ee619a65474\"},{\"id\":\"dea952fb5d53af66eacd095f81ec79279668fc57\",\"short_id\":\"dea952fb\",\"created_at\":\"2020-05-13T01:22:48.000+02:00\",\"parent_ids\":[\"4fb74b7cbdd76aa1271255fc342ffa6f114b218c\"],\"title\":\"umastodon: + Update checksum\",\"message\":\"umastodon: Update + checksum\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-05-12T23:10:38.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-05-13T01:22:48.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/dea952fb5d53af66eacd095f81ec79279668fc57\"},{\"id\":\"4fb74b7cbdd76aa1271255fc342ffa6f114b218c\",\"short_id\":\"4fb74b7c\",\"created_at\":\"2020-05-13T01:22:45.000+02:00\",\"parent_ids\":[\"1c95f3108d892bcf5d3393a728715dbf2755ccdb\"],\"title\":\"Add + ci config\",\"message\":\"Add ci config\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-05-12T15:23:39.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-05-13T01:22:45.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/4fb74b7cbdd76aa1271255fc342ffa6f114b218c\"},{\"id\":\"1c95f3108d892bcf5d3393a728715dbf2755ccdb\",\"short_id\":\"1c95f310\",\"created_at\":\"2020-05-12T13:47:52.000+02:00\",\"parent_ids\":[\"b27ea1833ce604e74d79d59ef9c42cd67632dae8\"],\"title\":\"Remove + some executables from the Sdk\",\"message\":\"Remove some executables from the + Sdk\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-05-12T13:46:53.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-05-12T13:47:52.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/1c95f3108d892bcf5d3393a728715dbf2755ccdb\"},{\"id\":\"b27ea1833ce604e74d79d59ef9c42cd67632dae8\",\"short_id\":\"b27ea183\",\"created_at\":\"2020-05-12T13:47:38.000+02:00\",\"parent_ids\":[\"62f4a02ec8fd1d1b7749ea444b6de4e07b45b3af\"],\"title\":\"Add + license\",\"message\":\"Add license\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-05-12T13:45:22.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-05-12T13:47:38.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/b27ea1833ce604e74d79d59ef9c42cd67632dae8\"},{\"id\":\"62f4a02ec8fd1d1b7749ea444b6de4e07b45b3af\",\"short_id\":\"62f4a02e\",\"created_at\":\"2020-04-01T20:28:43.000+02:00\",\"parent_ids\":[\"43adaaaa59ece1d2b56c7f6e00b17966b9728e48\"],\"title\":\"clock: + Move env to finish-args\",\"message\":\"clock: Move env to + finish-args\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-04-01T20:28:43.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-04-01T20:28:43.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/62f4a02ec8fd1d1b7749ea444b6de4e07b45b3af\"},{\"id\":\"43adaaaa59ece1d2b56c7f6e00b17966b9728e48\",\"short_id\":\"43adaaaa\",\"created_at\":\"2020-04-01T01:07:56.000+02:00\",\"parent_ids\":[\"be168a575b907d2bb9ce9242a2826d311698fe57\"],\"title\":\"Clock: + Remove debug print\",\"message\":\"Clock: Remove debug + print\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-04-01T01:07:56.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-04-01T01:07:56.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/43adaaaa59ece1d2b56c7f6e00b17966b9728e48\"},{\"id\":\"be168a575b907d2bb9ce9242a2826d311698fe57\",\"short_id\":\"be168a57\",\"created_at\":\"2020-04-01T00:58:13.000+02:00\",\"parent_ids\":[\"d393d2390e6bb3a487e1f66110732a86391b136d\"],\"title\":\"Set + Controls style to suru\",\"message\":\"Set Controls style to + suru\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-04-01T00:58:13.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-04-01T00:58:13.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/be168a575b907d2bb9ce9242a2826d311698fe57\"},{\"id\":\"d393d2390e6bb3a487e1f66110732a86391b136d\",\"short_id\":\"d393d239\",\"created_at\":\"2020-03-31T19:56:37.000+02:00\",\"parent_ids\":[\"d7238695f143d9c23647716141700336471f9940\"],\"title\":\"Update + quick memo checksum\",\"message\":\"Update quick memo + checksum\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-03-31T19:52:05.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-03-31T19:56:37.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/d393d2390e6bb3a487e1f66110732a86391b136d\"},{\"id\":\"d7238695f143d9c23647716141700336471f9940\",\"short_id\":\"d7238695\",\"created_at\":\"2020-03-31T19:56:37.000+02:00\",\"parent_ids\":[\"0fe7e5aaab4060dcc5abc7caedcb548e937cb99d\"],\"title\":\"Fix + build of ubuntu-ui-toolkit\",\"message\":\"Fix build of + ubuntu-ui-toolkit\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-03-31T17:37:30.000+02:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-03-31T19:56:37.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/d7238695f143d9c23647716141700336471f9940\"},{\"id\":\"0fe7e5aaab4060dcc5abc7caedcb548e937cb99d\",\"short_id\":\"0fe7e5aa\",\"created_at\":\"2020-03-31T19:56:37.000+02:00\",\"parent_ids\":[\"832b5ffc6a8c61ba65b383b6047dc2de587cb13b\"],\"title\":\"Switch + ubuntu-ui-toolkit to xenial branch\",\"message\":\"Switch ubuntu-ui-toolkit to + xenial branch\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-19T10:32:03.000+00:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-03-31T19:56:37.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/0fe7e5aaab4060dcc5abc7caedcb548e937cb99d\"},{\"id\":\"832b5ffc6a8c61ba65b383b6047dc2de587cb13b\",\"short_id\":\"832b5ffc\",\"created_at\":\"2020-03-31T19:56:37.000+02:00\",\"parent_ids\":[\"9879cfee04a4a69054ac846b48b91da6e79c7a19\"],\"title\":\"Add + clock app\",\"message\":\"Add clock app\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-18T19:13:32.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-03-31T19:56:37.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/832b5ffc6a8c61ba65b383b6047dc2de587cb13b\"},{\"id\":\"9879cfee04a4a69054ac846b48b91da6e79c7a19\",\"short_id\":\"9879cfee\",\"created_at\":\"2020-03-31T19:56:34.000+02:00\",\"parent_ids\":[\"c163a19c9743e4c4c16dc35f14e58a7093007067\"],\"title\":\"Fix + weather.yml\",\"message\":\"Fix weather.yml\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-18T19:03:28.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-03-31T19:56:34.000+02:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/9879cfee04a4a69054ac846b48b91da6e79c7a19\"},{\"id\":\"c163a19c9743e4c4c16dc35f14e58a7093007067\",\"short_id\":\"c163a19c\",\"created_at\":\"2020-02-04T18:18:39.000+01:00\",\"parent_ids\":[\"a751aa8f7f9516863a1efa0e11645d184123ecdc\"],\"title\":\"Commit + missing patch\",\"message\":\"Commit missing + patch\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-04T18:18:39.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-02-04T18:18:39.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/c163a19c9743e4c4c16dc35f14e58a7093007067\"},{\"id\":\"a751aa8f7f9516863a1efa0e11645d184123ecdc\",\"short_id\":\"a751aa8f\",\"created_at\":\"2020-02-04T18:09:30.000+01:00\",\"parent_ids\":[\"f3859eab15b69cda8c7934a0081819bab8003f25\"],\"title\":\"Add + weather app\",\"message\":\"Add weather app\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-04T18:09:30.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-02-04T18:09:30.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/a751aa8f7f9516863a1efa0e11645d184123ecdc\"},{\"id\":\"f3859eab15b69cda8c7934a0081819bab8003f25\",\"short_id\":\"f3859eab\",\"created_at\":\"2020-02-04T16:54:52.000+01:00\",\"parent_ids\":[\"7216f4943b572cc1e80c9e4c6412c701aa87bdae\"],\"title\":\"calculator: + Fix url\",\"message\":\"calculator: Fix url\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-04T16:54:52.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-02-04T16:54:52.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/f3859eab15b69cda8c7934a0081819bab8003f25\"},{\"id\":\"7216f4943b572cc1e80c9e4c6412c701aa87bdae\",\"short_id\":\"7216f494\",\"created_at\":\"2020-02-04T16:53:14.000+01:00\",\"parent_ids\":[\"e26305986ee8f5760bbc08eae583dfd6e19dcaa9\"],\"title\":\"Add + calculator (currently not functional)\",\"message\":\"Add calculator + (currently not functional)\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-04T16:53:14.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-02-04T16:53:14.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/7216f4943b572cc1e80c9e4c6412c701aa87bdae\"},{\"id\":\"e26305986ee8f5760bbc08eae583dfd6e19dcaa9\",\"short_id\":\"e2630598\",\"created_at\":\"2020-02-03T16:01:26.000+01:00\",\"parent_ids\":[\"804ca0288eea580df775fd2fa41bd2829323699c\"],\"title\":\"Remove + qtconnectivity\",\"message\":\"Remove + qtconnectivity\\n\",\"author_name\":\"Jonah + Br\xFCchert\",\"author_email\":\"jbb.prv@gmx.de\",\"authored_date\":\"2020-02-03T16:01:26.000+01:00\",\"committer_name\":\"Jonah + Br\xFCchert\",\"committer_email\":\"jbb.prv@gmx.de\",\"committed_date\":\"2020-02-03T16:01:26.000+01:00\",\"trailers\":{},\"extended_trailers\":{},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/commit/e26305986ee8f5760bbc08eae583dfd6e19dcaa9\"}]" + headers: + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c6634a0ec129-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:15 GMT + ETag: + - W/"75954b2f3b96b58940527efcbf1e29d2" + Link: + - ; + rel="next", + ; + rel="first" + Server: + - cloudflare + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + Vary: + - Origin, Accept-Encoding + content-length: + - "67512" + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-48-lb-gprd + gitlab-sv: + - api-gke-us-east1-d + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "6" + ratelimit-remaining: + - "1994" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c66362b4c129-ATL","version":"1"}' + x-next-page: + - "2" + x-page: + - "1" + x-per-page: + - "100" + x-prev-page: + - "" + x-request-id: + - 9c11c66362b4c129-ATL + x-runtime: + - "0.132346" + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/projects/10965795 + response: + body: + string: + '{"id":10965795,"description":"","name":"Ubuntu Touch Flatpak + Runtime","name_with_namespace":"UBports / Development / Core / Flatpak / + Ubuntu Touch Flatpak + Runtime","path":"ubuntu-touch-flatpak-runtime","path_with_namespace":"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","created_at":"2019-02-21T18:31:11.781Z","default_branch":"master","tag_list":[],"topics":[],"ssh_url_to_repo":"git@gitlab.com:ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","http_url_to_repo":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime.git","web_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","readme_url":"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/blob/master/README.md","forks_count":6,"avatar_url":null,"star_count":11,"last_activity_at":"2025-09-16T20:14:35.369Z","visibility":"public","namespace":{"id":10853245,"name":"Flatpak","path":"flatpak","kind":"group","full_path":"ubports/development/core/flatpak","parent_id":4298794,"avatar_url":null,"web_url":"https://gitlab.com/groups/ubports/development/core/flatpak"},"container_registry_image_prefix":"registry.gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime","_links":{"self":"https://gitlab.com/api/v4/projects/10965795","issues":"https://gitlab.com/api/v4/projects/10965795/issues","merge_requests":"https://gitlab.com/api/v4/projects/10965795/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/10965795/repository/branches","labels":"https://gitlab.com/api/v4/projects/10965795/labels","events":"https://gitlab.com/api/v4/projects/10965795/events","members":"https://gitlab.com/api/v4/projects/10965795/members","cluster_agents":"https://gitlab.com/api/v4/projects/10965795/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2379787,"import_status":"none","open_issues_count":4,"description_html":"","updated_at":"2025-09-16T20:14:35.369Z","ci_config_path":"","public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":false,"request_access_enabled":false,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":false,"printing_merge_request_link_enabled":true,"merge_method":"ff","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":"","merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"approvals_before_merge":0,"mirror":false,"external_authorization_classification_label":"","requirements_enabled":true,"requirements_access_level":"enabled","security_and_compliance_enabled":false,"compliance_frameworks":[],"issues_template":null,"merge_requests_template":"","merge_pipelines_enabled":false,"merge_trains_enabled":false,"merge_trains_skip_train_allowed":false,"only_allow_merge_if_all_status_checks_passed":false,"allow_pipeline_trigger_approve_deployment":false,"prevent_merge_without_jira_issue":false,"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":true,"duo_sast_fp_detection_enabled":false,"spp_repository_pipeline_access":false,"permissions":{"project_access":null,"group_access":null}}' + headers: + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c665d90b0e6c-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:16 GMT + ETag: + - W/"3489aba455fbbbfeca6adb28ac400bf5" + Server: + - cloudflare + Set-Cookie: + - __cf_bm=D6.i09zh6011X37nk9QhNukRuOLUrmgWS5EM_..rtuc-1768945696-1.0.1.1-3RfXIZ5KQUoyc.MuJV08hbUg3X2PlFlQ89JnR7o4b5Xtdp_MfJd0vyOJfwluEt9Go0OpUwqnyvK_GmOMOrx_W7LElS2prk_IZih6Nr43hOE; + path=/; expires=Tue, 20-Jan-26 22:18:16 GMT; domain=.gitlab.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=rL89fcxJYKZ8PRV4cY3fyBlYJiIvjE3vUAEZ1uP_xDk-1768945696386-0.0.1.1-604800000; + path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + Vary: + - Origin, Accept-Encoding + content-length: + - "4634" + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-38-lb-gprd + gitlab-sv: + - api-gke-us-east1-c + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "7" + ratelimit-remaining: + - "1993" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c66603100e6c-ATL","version":"1"}' + x-request-id: + - 9c11c66603100e6c-ATL + x-runtime: + - "0.566733" + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-type: + - application/json + Cookie: + - __cf_bm=D6.i09zh6011X37nk9QhNukRuOLUrmgWS5EM_..rtuc-1768945696-1.0.1.1-3RfXIZ5KQUoyc.MuJV08hbUg3X2PlFlQ89JnR7o4b5Xtdp_MfJd0vyOJfwluEt9Go0OpUwqnyvK_GmOMOrx_W7LElS2prk_IZih6Nr43hOE; + _cfuvid=rL89fcxJYKZ8PRV4cY3fyBlYJiIvjE3vUAEZ1uP_xDk-1768945696386-0.0.1.1-604800000 + User-Agent: + - python-gitlab/7.1.0 + method: GET + uri: https://gitlab.com/api/v4/projects/10965795/merge_requests?page=1&per_page=100&updated_before=2026-01-20+21%3A48%3A13&order_by=updated_at&scope=all&sort=asc&state=all + response: + body: + string: + "[{\"id\":85913689,\"iid\":2,\"project_id\":10965795,\"title\":\"Update + runtime and package teleports\",\"description\":\"There are a few problems + remaining, obviously:\\n- Icons are missing (which i think was fixed by + applying a patch again)\\n- Some texts are missing, I will investigate about + those\\n- ContentHub integration was patched out because i was too lazy to + package all that stuff for now\\n- Ubuntu.Connectivity Stuff was patched out, + i'm not sure if that stuff is useful anyway\\n- I could not figure out how to + get it to find and rename the icon for teleports\\n\\nAll the changes to the + runtime were basically necessary to get it to build + again\",\"state\":\"merged\",\"created_at\":\"2021-01-24T23:03:36.633Z\",\"updated_at\":\"2021-01-25T21:04:17.319Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-01-25T21:04:17.358Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"work/update\",\"user_notes_count\":3,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":348911,\"username\":\"TobiasFella\",\"public_email\":\"\",\"name\":\"Tobias + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8b03ad6d453517e18dd43b4402ba6f00657c609dff9193664da2d9e21c273586?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/TobiasFella\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":23893173,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"a93439b7683dd40441444ef04a3356d8de007c75\",\"merge_commit_sha\":\"a93439b7683dd40441444ef04a3356d8de007c75\",\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-01-24T23:03:36.633Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!2\",\"references\":{\"short\":\"!2\",\"relative\":\"!2\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!2\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/2\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":true,\"squash_on_merge\":true,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":86200260,\"iid\":3,\"project_id\":10965795,\"title\":\"Use + 1.6 of tdlib\",\"description\":\"Fixes showing the message sender's + names\",\"state\":\"merged\",\"created_at\":\"2021-01-26T20:19:44.171Z\",\"updated_at\":\"2021-01-27T20:14:47.467Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-01-27T20:14:47.507Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"work/tdlibversion\",\"user_notes_count\":2,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":348911,\"username\":\"TobiasFella\",\"public_email\":\"\",\"name\":\"Tobias + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8b03ad6d453517e18dd43b4402ba6f00657c609dff9193664da2d9e21c273586?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/TobiasFella\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":23893173,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"78f4fa2dcbd12d1f94f27669362262b58a889f71\",\"merge_commit_sha\":\"57c573cb0a407f62be8d60daa5f902a7c1041a06\",\"squash_commit_sha\":\"78f4fa2dcbd12d1f94f27669362262b58a889f71\",\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-01-26T20:19:44.171Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!3\",\"references\":{\"short\":\"!3\",\"relative\":\"!3\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!3\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/3\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":true,\"squash_on_merge\":true,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":86748716,\"iid\":4,\"project_id\":10965795,\"title\":\"Draft: + Package dekko\",\"description\":\"Very + WIP\",\"state\":\"opened\",\"created_at\":\"2021-01-30T18:38:08.700Z\",\"updated_at\":\"2021-01-31T00:35:33.952Z\",\"merged_by\":null,\"merge_user\":null,\"merged_at\":null,\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"work/dekko\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":348911,\"username\":\"TobiasFella\",\"public_email\":\"\",\"name\":\"Tobias + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8b03ad6d453517e18dd43b4402ba6f00657c609dff9193664da2d9e21c273586?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/TobiasFella\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":23893173,\"target_project_id\":10965795,\"labels\":[],\"draft\":true,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":true,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"draft_status\",\"merge_after\":null,\"sha\":\"db1b963ddad01324682a4e6656e3a7706950b15d\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-01-30T18:38:08.700Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!4\",\"references\":{\"short\":\"!4\",\"relative\":\"!4\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!4\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/4\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":true,\"squash_on_merge\":true,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":92885633,\"iid\":5,\"project_id\":10965795,\"title\":\"Update + teleports + patches\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2021-03-21T21:44:47.415Z\",\"updated_at\":\"2021-03-25T01:47:45.324Z\",\"merged_by\":{\"id\":2365670,\"username\":\"mariogrip\",\"public_email\":\"\",\"name\":\"Marius + Gripsgard\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8a9b75c39f816e90803d8226253651ad1900d7037513469c9ff44ff39cc6facb?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/mariogrip\"},\"merge_user\":{\"id\":2365670,\"username\":\"mariogrip\",\"public_email\":\"\",\"name\":\"Marius + Gripsgard\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8a9b75c39f816e90803d8226253651ad1900d7037513469c9ff44ff39cc6facb?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/mariogrip\"},\"merged_at\":\"2021-03-25T01:47:45.365Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"teleports\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":1619770,\"username\":\"nicolasfella\",\"public_email\":\"\",\"name\":\"Nicolas + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/f33bc61d539af3b700d80ef45154406eb713e559c08568fd3810f7c160f9e7d1?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/nicolasfella\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":25318383,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"b5ca25b7314098297dbe01cdac471315be9414a2\",\"merge_commit_sha\":\"4067f42495973ecc03c92f8721ef6b72de8e3954\",\"squash_commit_sha\":\"b5ca25b7314098297dbe01cdac471315be9414a2\",\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-03-21T21:44:47.415Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!5\",\"references\":{\"short\":\"!5\",\"relative\":\"!5\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!5\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/5\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":true,\"squash_on_merge\":true,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":103962240,\"iid\":7,\"project_id\":10965795,\"title\":\"Update + boost\",\"description\":\"\",\"state\":\"closed\",\"created_at\":\"2021-06-13T21:56:32.852Z\",\"updated_at\":\"2021-06-13T23:51:58.359Z\",\"merged_by\":null,\"merge_user\":null,\"merged_at\":null,\"closed_by\":{\"id\":348911,\"username\":\"TobiasFella\",\"public_email\":\"\",\"name\":\"Tobias + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8b03ad6d453517e18dd43b4402ba6f00657c609dff9193664da2d9e21c273586?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/TobiasFella\"},\"closed_at\":\"2021-06-13T23:51:58.377Z\",\"target_branch\":\"master\",\"source_branch\":\"work/boost\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":1619770,\"username\":\"nicolasfella\",\"public_email\":\"\",\"name\":\"Nicolas + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/f33bc61d539af3b700d80ef45154406eb713e559c08568fd3810f7c160f9e7d1?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/nicolasfella\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":25318383,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"0ef40e470da0748c925227ca7f08e02fd2ca0731\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-06-13T21:56:32.852Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!7\",\"references\":{\"short\":\"!7\",\"relative\":\"!7\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!7\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/7\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":104130426,\"iid\":9,\"project_id\":10965795,\"title\":\"Draft: + Update runtime and lomiri components\",\"description\":\"Update org.kde.Sdk to + 5.15. This allows to have a newer mesa that works on the Pine + Phone.\",\"state\":\"opened\",\"created_at\":\"2021-06-15T01:17:36.286Z\",\"updated_at\":\"2021-06-15T01:45:04.778Z\",\"merged_by\":null,\"merge_user\":null,\"merged_at\":null,\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"update-5.15\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":true,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":true,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"cannot_be_merged\",\"detailed_merge_status\":\"draft_status\",\"merge_after\":null,\"sha\":\"a8d9a4dfde102697261d96e8d5970283022c6e37\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":false,\"prepared_at\":\"2021-06-15T01:17:36.286Z\",\"reference\":\"!9\",\"references\":{\"short\":\"!9\",\"relative\":\"!9\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!9\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/9\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":true,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":104129662,\"iid\":8,\"project_id\":10965795,\"title\":\"Update + quick-memo checksum\",\"description\":\"Fixes build failure + https://gitlab.com/ubports/core/flatpak/ubuntu-touch-flatpak-runtime/-/jobs/1343059871\",\"state\":\"merged\",\"created_at\":\"2021-06-15T01:06:29.837Z\",\"updated_at\":\"2021-06-15T12:46:13.998Z\",\"merged_by\":{\"id\":1785833,\"username\":\"EspiDev\",\"public_email\":\"espidev@gmail.com\",\"name\":\"espidev\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/1785833/avatar.png\",\"web_url\":\"https://gitlab.com/EspiDev\"},\"merge_user\":{\"id\":1785833,\"username\":\"EspiDev\",\"public_email\":\"espidev@gmail.com\",\"name\":\"espidev\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/1785833/avatar.png\",\"web_url\":\"https://gitlab.com/EspiDev\"},\"merged_at\":\"2021-06-15T12:46:14.037Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"EspiDev-master-patch-28322\",\"user_notes_count\":2,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":1785833,\"username\":\"EspiDev\",\"public_email\":\"espidev@gmail.com\",\"name\":\"espidev\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/1785833/avatar.png\",\"web_url\":\"https://gitlab.com/EspiDev\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":27435545,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"2f7f0f191ed5d9fded2c3665d4feb5fdc8365c03\",\"merge_commit_sha\":\"8c5f5bbb87fc340d4cd0da03533c1f426cf78ccc\",\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-06-15T01:06:29.837Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!8\",\"references\":{\"short\":\"!8\",\"relative\":\"!8\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!8\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/8\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":104236273,\"iid\":10,\"project_id\":10965795,\"title\":\"Update + runtime to 5.15\",\"description\":\"This merge request only updates the + runtime. My last one also updated some lomiri components, which we don't want + yet since they renamed the modules from Unity to Lomiri which makes most + current apps + incompatible.\",\"state\":\"merged\",\"created_at\":\"2021-06-15T13:31:50.480Z\",\"updated_at\":\"2021-06-15T19:02:15.370Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-06-15T19:02:15.396Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"update-5-15-ng\",\"user_notes_count\":1,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[{\"id\":348911,\"username\":\"TobiasFella\",\"public_email\":\"\",\"name\":\"Tobias + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/8b03ad6d453517e18dd43b4402ba6f00657c609dff9193664da2d9e21c273586?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/TobiasFella\"},{\"id\":1619770,\"username\":\"nicolasfella\",\"public_email\":\"\",\"name\":\"Nicolas + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/f33bc61d539af3b700d80ef45154406eb713e559c08568fd3810f7c160f9e7d1?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/nicolasfella\"}],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"f00c737b3a5b115acd7f15b73962f11092dfe67d\",\"merge_commit_sha\":\"9467f83f619dd9968e2934a4b255ec6b0f14b050\",\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":false,\"prepared_at\":\"2021-06-15T13:31:50.480Z\",\"reference\":\"!10\",\"references\":{\"short\":\"!10\",\"relative\":\"!10\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!10\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/10\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":95432479,\"iid\":6,\"project_id\":10965795,\"title\":\"Update + teleports + patches\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2021-04-11T15:55:01.949Z\",\"updated_at\":\"2021-06-17T13:25:49.733Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-06-17T13:25:49.766Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"updatepatches\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":1619770,\"username\":\"nicolasfella\",\"public_email\":\"\",\"name\":\"Nicolas + Fella\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/f33bc61d539af3b700d80ef45154406eb713e559c08568fd3810f7c160f9e7d1?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/nicolasfella\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":25318383,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"307f3edae49b5b30765f5a854dd5d85f1132e39f\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-04-11T15:55:01.949Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!6\",\"references\":{\"short\":\"!6\",\"relative\":\"!6\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!6\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/6\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":105067669,\"iid\":11,\"project_id\":10965795,\"title\":\"Add + local build + instructions\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2021-06-20T19:37:32.576Z\",\"updated_at\":\"2021-06-20T21:40:45.738Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-06-20T21:40:45.757Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"work/local-build-inst\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":1785833,\"username\":\"EspiDev\",\"public_email\":\"espidev@gmail.com\",\"name\":\"espidev\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/1785833/avatar.png\",\"web_url\":\"https://gitlab.com/EspiDev\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"cddbf7e6dc4efe9645972d7092202578c26a4047\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-06-20T19:37:32.576Z\",\"reference\":\"!11\",\"references\":{\"short\":\"!11\",\"relative\":\"!11\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!11\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/11\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":105071095,\"iid\":12,\"project_id\":10965795,\"title\":\"Build + on my Raspberry Pi\",\"description\":\"This will be painfully slow, but it + will get the job done.\\n\\nIt's a Raspberry Pi 4 with a harddrive connected + over USB 3.0 for the docker + storage.\",\"state\":\"merged\",\"created_at\":\"2021-06-20T22:34:17.591Z\",\"updated_at\":\"2021-06-22T00:21:09.286Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-06-22T00:21:09.307Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"jbb-runner\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"7013a22bba894298ad650df8a76dd1e99f4d38b9\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":false,\"prepared_at\":\"2021-06-20T22:34:17.591Z\",\"reference\":\"!12\",\"references\":{\"short\":\"!12\",\"relative\":\"!12\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!12\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/12\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":124307875,\"iid\":13,\"project_id\":10965795,\"title\":\"Fix + up + apps\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2021-11-03T14:39:07.451Z\",\"updated_at\":\"2021-11-03T14:39:27.136Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-11-03T14:39:27.157Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"fix-apps\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"5f07219e5de859e7dc2a5337963488429a23e207\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-11-03T14:39:07.451Z\",\"reference\":\"!13\",\"references\":{\"short\":\"!13\",\"relative\":\"!13\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!13\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/13\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":124469969,\"iid\":14,\"project_id\":10965795,\"title\":\"Fix + CI setup for QtWebEngine + baseapp\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2021-11-04T11:08:36.252Z\",\"updated_at\":\"2021-11-04T11:08:51.217Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-11-04T11:08:51.236Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"fix-apps\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"858fc58c9704a52f3be0ed9c548172c034caa1b5\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":false,\"prepared_at\":\"2021-11-04T11:08:36.252Z\",\"reference\":\"!14\",\"references\":{\"short\":\"!14\",\"relative\":\"!14\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!14\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/14\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":124679522,\"iid\":15,\"project_id\":10965795,\"title\":\"CI: + Also add flathub when building + apps\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2021-11-04T20:52:09.899Z\",\"updated_at\":\"2021-11-04T20:52:19.841Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-11-04T20:52:19.857Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"work/flathub\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"c8e20da408148a5a885c057c693e18fc58b5c430\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2021-11-04T20:52:09.899Z\",\"reference\":\"!15\",\"references\":{\"short\":\"!15\",\"relative\":\"!15\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!15\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/15\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":129702863,\"iid\":16,\"project_id\":10965795,\"title\":\"Fix + teleports + build\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2021-12-07T14:58:23.892Z\",\"updated_at\":\"2021-12-07T14:58:43.808Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2021-12-07T14:58:43.835Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"work/teleports\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"307fa40dd86624b45d7f427748b834667d8e9f47\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":false,\"prepared_at\":\"2021-12-07T14:58:23.892Z\",\"reference\":\"!16\",\"references\":{\"short\":\"!16\",\"relative\":\"!16\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!16\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/16\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":154027522,\"iid\":17,\"project_id\":10965795,\"title\":\"Make + everything build + again\",\"description\":\"\",\"state\":\"merged\",\"created_at\":\"2022-05-08T12:16:52.757Z\",\"updated_at\":\"2022-05-08T12:17:12.473Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2022-05-08T12:17:12.500Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"fix-build\",\"user_notes_count\":0,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"assignees\":[{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"}],\"assignee\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"reviewers\":[],\"source_project_id\":10965795,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"6af7031b975e358db16c05212b2858b41e7b9f7f\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":false,\"prepared_at\":\"2022-05-08T12:16:52.757Z\",\"reference\":\"!17\",\"references\":{\"short\":\"!17\",\"relative\":\"!17\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!17\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/17\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":58612819,\"iid\":1,\"project_id\":10965795,\"title\":\"Dekko\",\"description\":\"As + requested - my current state. I merged your latest changes in before pushing + the + MR.\",\"state\":\"closed\",\"created_at\":\"2020-05-14T06:32:29.216Z\",\"updated_at\":\"2023-06-06T14:47:54.757Z\",\"merged_by\":null,\"merge_user\":null,\"merged_at\":null,\"closed_by\":{\"id\":2610900,\"username\":\"sunweaver\",\"public_email\":\"\",\"name\":\"Mike + Gabriel\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/ac337d364a7eb2afaebaea03c91a3c5d21c26efbe7012c49fd43514546db3ca6?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/sunweaver\"},\"closed_at\":\"2023-06-06T14:47:54.800Z\",\"target_branch\":\"master\",\"source_branch\":\"dekko\",\"user_notes_count\":2,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":2876957,\"username\":\"rogier.oudshoorn\",\"public_email\":\"\",\"name\":\"Rogier + Oudshoorn\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/4b592de4803502c8439176b3f5b93bf71f56199fdc9066989fb98b58c402f45c?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/rogier.oudshoorn\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":null,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"cannot_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"66580cc3d28b0334dd6b6e883424149574bd8b44\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":false,\"prepared_at\":\"2020-05-14T06:32:29.216Z\",\"allow_collaboration\":false,\"allow_maintainer_to_push\":false,\"reference\":\"!1\",\"references\":{\"short\":\"!1\",\"relative\":\"!1\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!1\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/1\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":true,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":353246443,\"iid\":18,\"project_id\":10965795,\"title\":\"Fix + build with latest dependencies\",\"description\":\"Removed unneeded patches + which don't work anymore. Required for build to + succeed\",\"state\":\"merged\",\"created_at\":\"2025-01-04T21:13:36.071Z\",\"updated_at\":\"2025-01-06T21:53:52.108Z\",\"merged_by\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merge_user\":{\"id\":2379787,\"username\":\"jbb\",\"public_email\":\"\",\"name\":\"Jonah + Br\xFCchert\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://gitlab.com/uploads/-/system/user/avatar/2379787/avatar.png\",\"web_url\":\"https://gitlab.com/jbb\"},\"merged_at\":\"2025-01-06T21:53:52.127Z\",\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"fix-build\",\"user_notes_count\":1,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":49788,\"username\":\"onny\",\"public_email\":\"\",\"name\":\"onny\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/c40ffe578cae7790b1abd1135975c69f82416bbecb50a9cfd4013fe0a61366cf?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/onny\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":65863167,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"not_open\",\"merge_after\":null,\"sha\":\"7517ba1c5c2a7cfc0d9e6c8cde8e2c4cd429c789\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2025-01-04T21:13:38.213Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!18\",\"references\":{\"short\":\"!18\",\"relative\":\"!18\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!18\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/18\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null},{\"id\":353264433,\"iid\":19,\"project_id\":10965795,\"title\":\"dekko: + init\",\"description\":\"\",\"state\":\"opened\",\"created_at\":\"2025-01-05T12:09:10.580Z\",\"updated_at\":\"2025-01-10T07:54:02.618Z\",\"merged_by\":null,\"merge_user\":null,\"merged_at\":null,\"closed_by\":null,\"closed_at\":null,\"target_branch\":\"master\",\"source_branch\":\"dekko\",\"user_notes_count\":7,\"upvotes\":0,\"downvotes\":0,\"author\":{\"id\":49788,\"username\":\"onny\",\"public_email\":\"\",\"name\":\"onny\",\"state\":\"active\",\"locked\":false,\"avatar_url\":\"https://secure.gravatar.com/avatar/c40ffe578cae7790b1abd1135975c69f82416bbecb50a9cfd4013fe0a61366cf?s=80\\u0026d=identicon\",\"web_url\":\"https://gitlab.com/onny\"},\"assignees\":[],\"assignee\":null,\"reviewers\":[],\"source_project_id\":65863167,\"target_project_id\":10965795,\"labels\":[],\"draft\":false,\"imported\":false,\"imported_from\":\"none\",\"work_in_progress\":false,\"milestone\":null,\"merge_when_pipeline_succeeds\":false,\"merge_status\":\"can_be_merged\",\"detailed_merge_status\":\"need_rebase\",\"merge_after\":null,\"sha\":\"4cdd0670b6833f255abcd328a6328fd38af7e2ea\",\"merge_commit_sha\":null,\"squash_commit_sha\":null,\"discussion_locked\":null,\"should_remove_source_branch\":null,\"force_remove_source_branch\":true,\"prepared_at\":\"2025-01-05T12:09:13.110Z\",\"allow_collaboration\":true,\"allow_maintainer_to_push\":true,\"reference\":\"!19\",\"references\":{\"short\":\"!19\",\"relative\":\"!19\",\"full\":\"ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime!19\"},\"web_url\":\"https://gitlab.com/ubports/development/core/flatpak/ubuntu-touch-flatpak-runtime/-/merge_requests/19\",\"time_stats\":{\"time_estimate\":0,\"total_time_spent\":0,\"human_time_estimate\":null,\"human_total_time_spent\":null},\"squash\":false,\"squash_on_merge\":false,\"task_completion_status\":{\"count\":0,\"completed_count\":0},\"has_conflicts\":false,\"blocking_discussions_resolved\":true,\"approvals_before_merge\":null}]" + headers: + CF-Cache-Status: + - MISS + CF-Ray: + - 9c11c66afcbb66d9-AMS + Cache-Control: + - max-age=0, private, must-revalidate + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Tue, 20 Jan 2026 21:48:17 GMT + ETag: + - W/"26570552628ef33d721fcb4ec96a450c" + Link: + - ; + rel="first", + ; + rel="last" + Server: + - cloudflare + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + Vary: + - Origin, Accept-Encoding + content-length: + - "43898" + content-security-policy: + - default-src 'none' + gitlab-lb: + - haproxy-main-43-lb-gprd + gitlab-sv: + - gke-cny-api + nel: + - '{"max_age": 0}' + ratelimit-limit: + - "2000" + ratelimit-name: + - throttle_authenticated_api + ratelimit-observed: + - "8" + ratelimit-remaining: + - "1992" + ratelimit-reset: + - "1768945740" + referrer-policy: + - strict-origin-when-cross-origin + x-content-type-options: + - nosniff + x-frame-options: + - SAMEORIGIN + x-gitlab-meta: + - '{"correlation_id":"9c11c66b12bb66d9-ATL","version":"1"}' + x-next-page: + - "" + x-page: + - "1" + x-per-page: + - "100" + x-prev-page: + - "" + x-request-id: + - 9c11c66b12bb66d9-ATL + x-runtime: + - "0.394994" + x-total: + - "19" + x-total-pages: + - "1" + status: + code: 200 + message: OK +version: 1 diff --git a/gitlab/utils.py b/gitlab/utils.py new file mode 100644 index 000000000..d4b9ac2f7 --- /dev/null +++ b/gitlab/utils.py @@ -0,0 +1,12 @@ +from datetime import timezone + +from dateutil import parser + + +def _gitlab_datetime_to_odoo(datetime_string): + if datetime_string is None: + return False + dt = parser.parse(datetime_string) + dt = dt.astimezone(timezone.utc) + dt = dt.replace(tzinfo=None) + return dt diff --git a/gitlab/views/commit_view.xml b/gitlab/views/commit_view.xml new file mode 100644 index 000000000..fe2491ad0 --- /dev/null +++ b/gitlab/views/commit_view.xml @@ -0,0 +1,54 @@ + + + + gitlab.commit + +
+ + + + + + + + + + + + +
+
+
+ + + gitlab.commit + + + + + + + + + + + + + + + + Gitlab Commits + gitlab.commit + list,form + + + + Reconcile Partners + + + code + + records.reconcile_partner() + + +
diff --git a/gitlab/views/gitlab_view.xml b/gitlab/views/gitlab_view.xml new file mode 100644 index 000000000..0ec266b02 --- /dev/null +++ b/gitlab/views/gitlab_view.xml @@ -0,0 +1,36 @@ + + + + gitlab + +
+
+
+ + + + + + + +
+
+
+ + + gitlab + + + + + + + + + + Connections + gitlab + list,form + +
diff --git a/gitlab/views/group_view.xml b/gitlab/views/group_view.xml new file mode 100644 index 000000000..aec949567 --- /dev/null +++ b/gitlab/views/group_view.xml @@ -0,0 +1,67 @@ + + + + gitlab.group + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+ + + gitlab.group + + + + + + + + + + + gitlab.group + + + + + + + + + + Gitlab Groups + gitlab.group + list,form + +
diff --git a/gitlab/views/issue_view.xml b/gitlab/views/issue_view.xml new file mode 100644 index 000000000..440cf735b --- /dev/null +++ b/gitlab/views/issue_view.xml @@ -0,0 +1,103 @@ + + + + gitlab.issue + +
+
+
+ + + + + + + + + + + + +
+
+
+ + + gitlab.issue + + + + + + + + + + + + + + + + Gitlab Issues + gitlab.issue + list,form + + + + gitlab.issue + + + + + + + + + + + + + + + + + + + + Reconcile Partners + + + code + + records.reconcile_partner() + + +
diff --git a/gitlab/views/merge_request_approval_view.xml b/gitlab/views/merge_request_approval_view.xml new file mode 100644 index 000000000..1e92586eb --- /dev/null +++ b/gitlab/views/merge_request_approval_view.xml @@ -0,0 +1,49 @@ + + + + gitlab.merge.request.approval + +
+ + + + + + + + +
+
+
+ + + gitlab.merge.request.approval + + + + + + + + + + + + Gitlab Merge Request Approvals + gitlab.merge.request.approval + list,form + + + + Reconcile Partners + + + code + + records.reconcile_partner() + + +
diff --git a/gitlab/views/merge_request_view.xml b/gitlab/views/merge_request_view.xml new file mode 100644 index 000000000..0a1bdb57b --- /dev/null +++ b/gitlab/views/merge_request_view.xml @@ -0,0 +1,114 @@ + + + + gitlab.merge.request + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+ + + gitlab.merge.request + + + + + + + + + + + + + + + + gitlab.merge.request + + + + + + + + + + + + + + + + + + + + Gitlab Merge Requests + gitlab.merge.request + list,form + + + + Reconcile Partners + + + code + + records.reconcile_partner() + + +
diff --git a/gitlab/views/note_view.xml b/gitlab/views/note_view.xml new file mode 100644 index 000000000..9837037f4 --- /dev/null +++ b/gitlab/views/note_view.xml @@ -0,0 +1,50 @@ + + + + gitlab.note + +
+ + + + + + + + + + +
+
+
+ + + gitlab.note + + + + + + + + + + + + + + Gitlab Notes + gitlab.note + list,form + + + + Reconcile Partners + + + code + + records.reconcile_partner() + + +
diff --git a/gitlab/views/project_view.xml b/gitlab/views/project_view.xml new file mode 100644 index 000000000..5bd36ca7f --- /dev/null +++ b/gitlab/views/project_view.xml @@ -0,0 +1,48 @@ + + + + gitlab.project + +
+
+
+ + + + + + + + +
+
+
+ + + gitlab.project + + + + + + + + + + + Gitlab Projects + gitlab.project + list,form + +
diff --git a/gitlab/views/res_partner_view.xml b/gitlab/views/res_partner_view.xml new file mode 100644 index 000000000..2b8228c9a --- /dev/null +++ b/gitlab/views/res_partner_view.xml @@ -0,0 +1,13 @@ + + + + res.partner + + + + + + + + + diff --git a/requirements.txt b/requirements.txt index 3ab5caba8..00eebd5ad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ mysqlclient pymssql<=2.2.5 ; python_version <= '3.10' pymssql<=2.2.8 ; python_version > '3.10' +python-gitlab sqlalchemy