From 059e5798a240ec7e6ef3ce967cc9e86b439c1732 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 25 Feb 2021 13:03:13 +0100 Subject: [PATCH] notebook updates --- .vscode/notebooks/grooming.github-issues | 12 +- .vscode/notebooks/my-endgame.github-issues | 300 +-------------------- 2 files changed, 10 insertions(+), 302 deletions(-) diff --git a/.vscode/notebooks/grooming.github-issues b/.vscode/notebooks/grooming.github-issues index f44b2c71eed..407895eccf2 100644 --- a/.vscode/notebooks/grooming.github-issues +++ b/.vscode/notebooks/grooming.github-issues @@ -3,24 +3,28 @@ "kind": 1, "language": "markdown", "value": "### Categorizing Issues\n\nEach issue must have a type label. Most type labels are grey, some are yellow. Bugs are grey with a touch of red.", - "editable": true + "editable": true, + "outputs": [] }, { "kind": 2, "language": "github-issues", "value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:\"needs more info\" -label:bug -label:feature-request -label:under-discussion -label:debt -label:*question -label:upstream -label:electron -label:engineering -label:plan-item ", - "editable": true + "editable": true, + "outputs": [] }, { "kind": 1, "language": "markdown", "value": "### Feature Areas\n\nEach issue should be assigned to a feature area", - "editable": true + "editable": true, + "outputs": [] }, { "kind": 2, "language": "github-issues", "value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:L10N -label:VIM -label:api -label:api-finalization -label:api-proposal -label:authentication -label:breadcrumbs -label:callhierarchy -label:code-lens -label:color-palette -label:comments -label:config -label:context-keys -label:css-less-scss -label:custom-editors -label:debug -label:debug-console -label:dialogs -label:diff-editor -label:dropdown -label:editor -label:editor-RTL -label:editor-autoclosing -label:editor-autoindent -label:editor-bracket-matching -label:editor-clipboard -label:editor-code-actions -label:editor-color-picker -label:editor-columnselect -label:editor-commands -label:editor-comments -label:editor-contrib -label:editor-core -label:editor-drag-and-drop -label:editor-error-widget -label:editor-find -label:editor-folding -label:editor-highlight -label:editor-hover -label:editor-indent-detection -label:editor-indent-guides -label:editor-input -label:editor-input-IME -label:editor-insets -label:editor-minimap -label:editor-multicursor -label:editor-parameter-hints -label:editor-render-whitespace -label:editor-rendering -label:editor-scrollbar -label:editor-symbols -label:editor-synced-region -label:editor-textbuffer -label:editor-theming -label:editor-wordnav -label:editor-wrapping -label:emmet -label:error-list -label:explorer-custom -label:extension-host -label:extension-recommendations -label:extensions -label:extensions-development -label:file-decorations -label:file-encoding -label:file-explorer -label:file-glob -label:file-guess-encoding -label:file-io -label:file-watcher -label:font-rendering -label:formatting -label:git -label:github -label:gpu -label:grammar -label:grid-view -label:html -label:i18n -label:icon-brand -label:icons-product -label:install-update -label:integrated-terminal -label:integrated-terminal-conpty -label:integrated-terminal-links -label:integrated-terminal-rendering -label:integrated-terminal-winpty -label:intellisense-config -label:ipc -label:issue-bot -label:issue-reporter -label:javascript -label:json -label:keybindings -label:keybindings-editor -label:keyboard-layout -label:label-provider -label:languages-basic -label:languages-diagnostics -label:languages-guessing -label:layout -label:lcd-text-rendering -label:list -label:log -label:markdown -label:marketplace -label:menus -label:merge-conflict -label:notebook -label:outline -label:output -label:perf -label:perf-bloat -label:perf-startup -label:php -label:portable-mode -label:proxy -label:quick-pick -label:references-viewlet -label:release-notes -label:remote -label:remote-explorer -label:rename -label:sandbox -label:scm -label:screencast-mode -label:search -label:search-api -label:search-editor -label:search-replace -label:semantic-tokens -label:settings-editor -label:settings-sync -label:settings-sync-server -label:shared-process -label:simple-file-dialog -label:smart-select -label:snap -label:snippets -label:splitview -label:suggest -label:sync-error-handling -label:tasks -label:telemetry -label:themes -label:timeline -label:timeline-git -label:titlebar -label:tokenization -label:touch/pointer -label:trackpad/scroll -label:tree -label:typescript -label:undo-redo -label:uri -label:ux -label:variable-resolving -label:vscode-build -label:vscode-website -label:web -label:webview -label:workbench-actions -label:workbench-cli -label:workbench-diagnostics -label:workbench-dnd -label:workbench-editor-grid -label:workbench-editors -label:workbench-electron -label:workbench-feedback -label:workbench-history -label:workbench-hot-exit -label:workbench-hover -label:workbench-launch -label:workbench-link -label:workbench-multiroot -label:workbench-notifications -label:workbench-os-integration -label:workbench-rapid-render -label:workbench-run-as-admin -label:workbench-state -label:workbench-status -label:workbench-tabs -label:workbench-touchbar -label:workbench-views -label:workbench-welcome -label:workbench-window -label:workbench-zen -label:workspace-edit -label:workspace-symbols -label:zoom", - "editable": true + "editable": true, + "outputs": [] } ] \ No newline at end of file diff --git a/.vscode/notebooks/my-endgame.github-issues b/.vscode/notebooks/my-endgame.github-issues index 8194a2524f2..1be405ff2d6 100644 --- a/.vscode/notebooks/my-endgame.github-issues +++ b/.vscode/notebooks/my-endgame.github-issues @@ -109,303 +109,7 @@ "language": "github-issues", "value": "$REPOS $MILESTONE $MINE is:issue is:open label:testplan-item", "editable": true, - "outputs": [ - { - "mime": "text/markdown", - "value": "- [#117296](https://github.com/microsoft/vscode/issues/117296 \"Test: notebook output editing api\") Test: notebook output editing api [testplan-item]- [@lszomoru](https://github.com/lszomoru \"Issue 117296 is assigned to lszomoru\")\n\n- [#117275](https://github.com/microsoft/vscode/issues/117275 \"Test: Updated menu behavior for web / desktop\") Test: Updated menu behavior for web / desktop [testplan-item]- [@devinvalenciano](https://github.com/devinvalenciano \"Issue 117275 is assigned to devinvalenciano\")\n\n" - }, - { - "mime": "x-application/github-issues", - "value": [ - { - "url": "https://api.github.com/repos/microsoft/vscode/issues/117296", - "repository_url": "https://api.github.com/repos/microsoft/vscode", - "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/117296/labels{/name}", - "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/117296/comments", - "events_url": "https://api.github.com/repos/microsoft/vscode/issues/117296/events", - "html_url": "https://github.com/microsoft/vscode/issues/117296", - "id": 813951213, - "node_id": "MDU6SXNzdWU4MTM5NTEyMTM=", - "number": 117296, - "title": "Test: notebook output editing api", - "user": { - "login": "rebornix", - "id": 876920, - "node_id": "MDQ6VXNlcjg3NjkyMA==", - "avatar_url": "https://avatars.githubusercontent.com/u/876920?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rebornix", - "html_url": "https://github.com/rebornix", - "followers_url": "https://api.github.com/users/rebornix/followers", - "following_url": "https://api.github.com/users/rebornix/following{/other_user}", - "gists_url": "https://api.github.com/users/rebornix/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rebornix/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rebornix/subscriptions", - "organizations_url": "https://api.github.com/users/rebornix/orgs", - "repos_url": "https://api.github.com/users/rebornix/repos", - "events_url": "https://api.github.com/users/rebornix/events{/privacy}", - "received_events_url": "https://api.github.com/users/rebornix/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 307718050, - "node_id": "MDU6TGFiZWwzMDc3MTgwNTA=", - "url": "https://api.github.com/repos/microsoft/vscode/labels/testplan-item", - "name": "testplan-item", - "color": "dcdcdc", - "default": false, - "description": "Test plan item/assignments for upcoming release" - } - ], - "state": "open", - "locked": false, - "assignee": { - "login": "lszomoru", - "id": 3372902, - "node_id": "MDQ6VXNlcjMzNzI5MDI=", - "avatar_url": "https://avatars.githubusercontent.com/u/3372902?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/lszomoru", - "html_url": "https://github.com/lszomoru", - "followers_url": "https://api.github.com/users/lszomoru/followers", - "following_url": "https://api.github.com/users/lszomoru/following{/other_user}", - "gists_url": "https://api.github.com/users/lszomoru/gists{/gist_id}", - "starred_url": "https://api.github.com/users/lszomoru/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/lszomoru/subscriptions", - "organizations_url": "https://api.github.com/users/lszomoru/orgs", - "repos_url": "https://api.github.com/users/lszomoru/repos", - "events_url": "https://api.github.com/users/lszomoru/events{/privacy}", - "received_events_url": "https://api.github.com/users/lszomoru/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "lszomoru", - "id": 3372902, - "node_id": "MDQ6VXNlcjMzNzI5MDI=", - "avatar_url": "https://avatars.githubusercontent.com/u/3372902?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/lszomoru", - "html_url": "https://github.com/lszomoru", - "followers_url": "https://api.github.com/users/lszomoru/followers", - "following_url": "https://api.github.com/users/lszomoru/following{/other_user}", - "gists_url": "https://api.github.com/users/lszomoru/gists{/gist_id}", - "starred_url": "https://api.github.com/users/lszomoru/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/lszomoru/subscriptions", - "organizations_url": "https://api.github.com/users/lszomoru/orgs", - "repos_url": "https://api.github.com/users/lszomoru/repos", - "events_url": "https://api.github.com/users/lszomoru/events{/privacy}", - "received_events_url": "https://api.github.com/users/lszomoru/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", - "description": "", - "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 123, - "closed_issues": 495, - "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-24T10:41:06Z", - "due_on": null, - "closed_at": null - }, - "comments": 0, - "created_at": "2021-02-22T23:24:26Z", - "updated_at": "2021-02-24T09:31:00Z", - "closed_at": null, - "author_association": "MEMBER", - "active_lock_reason": null, - "body": "Refs: https://github.com/microsoft/vscode/pull/115817\r\n\r\n- [ ] anyOS @lszomoru \r\n- [x] anyOS @meganrogge\r\n\r\nComplexity: 4\r\n\r\nAuthors: @jrieken, @rebornix \r\n\r\n\r\n[Create Issue](https://github.com/microsoft/vscode/issues/new?body=Testing+%23117296%0A%0A)\r\n\r\n---\r\n\r\nThis iteration we revamped the notebook output interface and outputs edit API, with which you can now\r\n\r\n* Append outputs to a cell\r\n* Replace outputs in a cell\r\n* Append output items to a cell output\r\n* Replace output items in a cell output\r\n\r\n`NotebookCellOutput` is an object which contains multiple `NotebookCellOutputItem`, which is the raw output data for a specific mime type.\r\n\r\nFor example, you can create output with a single mimetype or multiple mimetypes\r\n\r\n```ts\r\n// renders as a text output `1`\r\nnew vscode.NotebookCellOutput([\r\n new vscode.NotebookCellOutputItem('application/x.notebook.stream', 1),\r\n])\r\n\r\n// renders as two outputs\r\nnew vscode.NotebookCellOutput([\r\n new vscode.NotebookCellOutputItem('application/x.notebook.stream', 1),\r\n new vscode.NotebookCellOutputItem('application/x.notebook.error-traceback', {\r\n ename: 'error2 not defined',\r\n evalue: 'console.error2 not defined',\r\n traceback: [\r\n 'console.error2'\r\n ]\r\n }),\r\n])\r\n```\r\n\r\nYou use write commands to modify the outputs of GitHub Issue Notebook or tweak https://github.com/rebornix/vscode-notebook-testbed to play around with all kinds of different mimtypes we support internally. Please test:\r\n\r\n* The new interface / API is intuitive to use in overall\r\n* Output replacement\r\n* Output appending\r\n * Try Clear Cell Output when the extension keeps appending outputs\r\n* Output item replacement and appending\r\n", - "performed_via_github_app": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/microsoft/vscode/issues/117275", - "repository_url": "https://api.github.com/repos/microsoft/vscode", - "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/117275/labels{/name}", - "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/117275/comments", - "events_url": "https://api.github.com/repos/microsoft/vscode/issues/117275/events", - "html_url": "https://github.com/microsoft/vscode/issues/117275", - "id": 813795102, - "node_id": "MDU6SXNzdWU4MTM3OTUxMDI=", - "number": 117275, - "title": "Test: Updated menu behavior for web / desktop", - "user": { - "login": "sbatten", - "id": 6561887, - "node_id": "MDQ6VXNlcjY1NjE4ODc=", - "avatar_url": "https://avatars.githubusercontent.com/u/6561887?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sbatten", - "html_url": "https://github.com/sbatten", - "followers_url": "https://api.github.com/users/sbatten/followers", - "following_url": "https://api.github.com/users/sbatten/following{/other_user}", - "gists_url": "https://api.github.com/users/sbatten/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sbatten/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sbatten/subscriptions", - "organizations_url": "https://api.github.com/users/sbatten/orgs", - "repos_url": "https://api.github.com/users/sbatten/repos", - "events_url": "https://api.github.com/users/sbatten/events{/privacy}", - "received_events_url": "https://api.github.com/users/sbatten/received_events", - "type": "User", - "site_admin": false - }, - "labels": [ - { - "id": 307718050, - "node_id": "MDU6TGFiZWwzMDc3MTgwNTA=", - "url": "https://api.github.com/repos/microsoft/vscode/labels/testplan-item", - "name": "testplan-item", - "color": "dcdcdc", - "default": false, - "description": "Test plan item/assignments for upcoming release" - } - ], - "state": "open", - "locked": false, - "assignee": { - "login": "devinvalenciano", - "id": 1389808, - "node_id": "MDQ6VXNlcjEzODk4MDg=", - "avatar_url": "https://avatars.githubusercontent.com/u/1389808?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/devinvalenciano", - "html_url": "https://github.com/devinvalenciano", - "followers_url": "https://api.github.com/users/devinvalenciano/followers", - "following_url": "https://api.github.com/users/devinvalenciano/following{/other_user}", - "gists_url": "https://api.github.com/users/devinvalenciano/gists{/gist_id}", - "starred_url": "https://api.github.com/users/devinvalenciano/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/devinvalenciano/subscriptions", - "organizations_url": "https://api.github.com/users/devinvalenciano/orgs", - "repos_url": "https://api.github.com/users/devinvalenciano/repos", - "events_url": "https://api.github.com/users/devinvalenciano/events{/privacy}", - "received_events_url": "https://api.github.com/users/devinvalenciano/received_events", - "type": "User", - "site_admin": false - }, - "assignees": [ - { - "login": "devinvalenciano", - "id": 1389808, - "node_id": "MDQ6VXNlcjEzODk4MDg=", - "avatar_url": "https://avatars.githubusercontent.com/u/1389808?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/devinvalenciano", - "html_url": "https://github.com/devinvalenciano", - "followers_url": "https://api.github.com/users/devinvalenciano/followers", - "following_url": "https://api.github.com/users/devinvalenciano/following{/other_user}", - "gists_url": "https://api.github.com/users/devinvalenciano/gists{/gist_id}", - "starred_url": "https://api.github.com/users/devinvalenciano/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/devinvalenciano/subscriptions", - "organizations_url": "https://api.github.com/users/devinvalenciano/orgs", - "repos_url": "https://api.github.com/users/devinvalenciano/repos", - "events_url": "https://api.github.com/users/devinvalenciano/events{/privacy}", - "received_events_url": "https://api.github.com/users/devinvalenciano/received_events", - "type": "User", - "site_admin": false - }, - { - "login": "lszomoru", - "id": 3372902, - "node_id": "MDQ6VXNlcjMzNzI5MDI=", - "avatar_url": "https://avatars.githubusercontent.com/u/3372902?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/lszomoru", - "html_url": "https://github.com/lszomoru", - "followers_url": "https://api.github.com/users/lszomoru/followers", - "following_url": "https://api.github.com/users/lszomoru/following{/other_user}", - "gists_url": "https://api.github.com/users/lszomoru/gists{/gist_id}", - "starred_url": "https://api.github.com/users/lszomoru/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/lszomoru/subscriptions", - "organizations_url": "https://api.github.com/users/lszomoru/orgs", - "repos_url": "https://api.github.com/users/lszomoru/repos", - "events_url": "https://api.github.com/users/lszomoru/events{/privacy}", - "received_events_url": "https://api.github.com/users/lszomoru/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", - "description": "", - "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", - "type": "User", - "site_admin": false - }, - "open_issues": 123, - "closed_issues": 495, - "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-24T10:41:06Z", - "due_on": null, - "closed_at": null - }, - "comments": 2, - "created_at": "2021-02-22T19:28:29Z", - "updated_at": "2021-02-23T19:02:07Z", - "closed_at": null, - "author_association": "MEMBER", - "active_lock_reason": null, - "body": "Refs: #114200\r\n- [ ] macOS @lszomoru\r\n- [x] linux @connor4312\r\n- [ ] windows @devinvalenciano\r\n\r\nComplexity: 3\r\n\n\n[Create Issue](https://github.com/microsoft/vscode/issues/new?body=Testing+%23117275%0A%0A)\n\r\n---\r\n\r\nThis milestone, we have tweaked the menu bar visibility settings in web and desktop. We have updated defaults, renamed the values, and even altered the behavior. There are several settings that impact the behavior of the menu bar.\r\n\r\nPlease test the following configurations, you can use the test matrices below for tracking.\r\n\r\nplatform | desktop | web\r\n------------- | ------------ | -------------\r\n**macOS** | not applicable | custom only\r\n**windows** | native/custom | custom only\r\n**linux** | native/custom | custom only\r\n\r\nFor a given configuration, set the titlebar style as appropriate.\r\n\r\n**Relevant Settings (availability dependent on platform):**\r\nSet visibility: `window.menuBarVisibility` (web default is compact, desktop default is classic)\r\n\r\n**test on non-macOS only**\r\nSet custom/native menu: `window.titleBarStyle`\r\nSet alt-behavior: `window.customMenuBarAltFocus`\r\nSet mnemonics enablement: `window.enableMenuBarMnemonics`\r\n\r\n**Note:** For macOS, the alt-behavior is different. Instead of mnemonics and alt-key to focus the menu, there is a command **Focus Application Menu** bound to **F10** by default\r\n\r\nOnce in **fullscreen**:\r\n\r\nvisibility X alt-behavior | alt focus + mnemonics | alt focus + no mnemonics | no alt focus + mnemonics | no alt focus + no mnemonics\r\n------------- | ------------ | ------------- | ------------- | -------------\r\n**classic** | | | | \r\n**visible** | | | | \r\n**toggle** | | | | \r\n**hidden** | | | | \r\n**compact** | | | | \r\n\r\nOnce **not in fullscreen**:\r\n\r\nvisibility X alt-behavior | alt focus + mnemonics | alt focus + no mnemonics | no alt focus + mnemonics | no alt focus + no mnemonics\r\n------------- | ------------ | ------------- | ------------- | -------------\r\n**classic** | | | | \r\n**visible** | | | | \r\n**toggle** | | | | \r\n**hidden** | | | | \r\n**compact** | | | | \r\n\r\nPlease use the settings and description to learn what the expected behavior is. If it is not clear and you feel it is important to change, please file an issue. If you aren't sure if it is doing the right thing, file an issue, I will clarify and close as necessary.\r\n\r\n", - "performed_via_github_app": null, - "score": 1 - } - ] - } - ] + "outputs": [] }, { "kind": 1, @@ -543,7 +247,7 @@ { "kind": 2, "language": "github-issues", - "value": "repo:microsoft/vscode $MILESTONE is:issue is:closed label:feature-request -label:on-release-notes", + "value": "repo:microsoft/vscode $MILESTONE $MINE is:issue is:closed label:feature-request -label:on-release-notes", "editable": true, "outputs": [] } -- GitLab