文件
mynode/readme/cla/consent_records/slimuCS_125249013.json
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

805 行
56 KiB
JSON

此文件含有不可见的 Unicode 字符

此文件含有人类无法区分的不可见的 Unicode 字符,但可以由计算机进行不同的处理。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14781/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14781/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14781/events",
"html_url": "https://github.com/laurent22/joplin/pull/14781",
"id": 4084676436,
"node_id": "PR_kwDOBLftOs7LCI7z",
"number": 14781,
"title": "Desktop: Resolves #14763: add settings search to config screen",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [
{
"id": 1080341216,
"node_id": "MDU6TGFiZWwxMDgwMzQxMjE2",
"url": "https://api.github.com/repos/laurent22/joplin/labels/desktop",
"name": "desktop",
"color": "ffc274",
"default": false,
"description": "All desktop platforms"
},
{
"id": 2394366066,
"node_id": "MDU6TGFiZWwyMzk0MzY2MDY2",
"url": "https://api.github.com/repos/laurent22/joplin/labels/search",
"name": "search",
"color": "91ca55",
"default": false,
"description": ""
},
{
"id": 3467743982,
"node_id": "LA_kwDOBLftOs7OsZLu",
"url": "https://api.github.com/repos/laurent22/joplin/labels/accessibility",
"name": "accessibility",
"color": "91ca55",
"default": false,
"description": "Related to accessibility"
}
],
"state": "closed",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 12,
"created_at": "2026-03-16T20:38:40Z",
"updated_at": "2026-03-18T19:17:38Z",
"closed_at": "2026-03-18T19:13:35Z",
"assignee": null,
"author_association": "CONTRIBUTOR",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14781",
"html_url": "https://github.com/laurent22/joplin/pull/14781",
"diff_url": "https://github.com/laurent22/joplin/pull/14781.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/14781.patch",
"merged_at": null
},
"body": "Fixes #14763 \r\n\r\n## Problem\r\n\r\nDesktop settings search did not work well as a navigation tool. Results were not clearly navigable from the sidebar, users could not jump directly to a specific setting row, and long labels could create sidebar layout pressure.\r\n\r\n## Solution\r\n\r\nThis PR makes settings search sidebar-first:\r\n\r\n- Show grouped matches under each section in the left sidebar (matching by section title, setting label, and description).\r\n- Keep the right pane stable while typing (no auto-switch during search input).\r\n- Switch to the detailed setting only when a sidebar search result is clicked.\r\n- Allow long labels to wrap in the sidebar and show a no-results state when nothing matches.\r\n- Add a clear button to quickly reset the search query.\r\n\r\n## Test Plan\r\n\r\n**Manual**\r\n\r\n1. Open the desktop configuration screen.\r\n2. Enter a query and confirm grouped matches appear under their original sections in the sidebar.\r\n3. Confirm typing does not auto-switch the right pane.\r\n4. Click a sidebar match and confirm section switch to the target setting.\r\n5. Enter a query with no matches and confirm No results is shown.\r\n6. Clear the query and confirm normal sidebar navigation returns.\r\n7. Verify long labels wrap without widening the sidebar.\r\n\r\n**Automated**\r\n\r\nAdded `packages/app-desktop/gui/ConfigScreen/Sidebar.test.tsx`. Covers:\r\n- grouped sidebar search results under their section\r\n- no-results state\r\n- click event payload including `section` and `settingKey`\r\n\r\n## Video\r\nhttps://github.com/user-attachments/assets/63f53859-177f-4ba3-9c96-43dc6c7e5a2f\r\n\r\n## AI Assistance Disclosure\r\n- AI was used to help draft and refine this PR description (wording, structure, and clarity).\r\n- AI was also used to suggest test-plan phrasing and summarize implementation intent.\r\n- I have reviewed all AI-assisted content, verified it against the actual code changes, and I fully understand the submitted code and text.",
"closed_by": {
"login": "personalizedrefrigerator",
"id": 46334387,
"node_id": "MDQ6VXNlcjQ2MzM0Mzg3",
"avatar_url": "https://avatars.githubusercontent.com/u/46334387?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/personalizedrefrigerator",
"html_url": "https://github.com/personalizedrefrigerator",
"followers_url": "https://api.github.com/users/personalizedrefrigerator/followers",
"following_url": "https://api.github.com/users/personalizedrefrigerator/following{/other_user}",
"gists_url": "https://api.github.com/users/personalizedrefrigerator/gists{/gist_id}",
"starred_url": "https://api.github.com/users/personalizedrefrigerator/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/personalizedrefrigerator/subscriptions",
"organizations_url": "https://api.github.com/users/personalizedrefrigerator/orgs",
"repos_url": "https://api.github.com/users/personalizedrefrigerator/repos",
"events_url": "https://api.github.com/users/personalizedrefrigerator/events{/privacy}",
"received_events_url": "https://api.github.com/users/personalizedrefrigerator/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14781/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/laurent22/joplin/issues/14781/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4070461914",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4070461914",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4070461914,
"node_id": "IC_kwDOBLftOs7ynlHa",
"user": {
"login": "coderabbitai[bot]",
"id": 136622811,
"node_id": "BOT_kgDOCCSy2w",
"avatar_url": "https://avatars.githubusercontent.com/in/347564?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/coderabbitai%5Bbot%5D",
"html_url": "https://github.com/apps/coderabbitai",
"followers_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/subscriptions",
"organizations_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/orgs",
"repos_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/repos",
"events_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/events{/privacy}",
"received_events_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/received_events",
"type": "Bot",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-16T20:39:27Z",
"updated_at": "2026-03-17T18:24:25Z",
"body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generated in the recent review. 🎉\n\n<details>\n<summary>ℹ️ Recent review info</summary>\n\n<details>\n<summary>⚙️ Run configuration</summary>\n\n**Configuration used**: Path: .coderabbit.yaml\n\n**Review profile**: CHILL\n\n**Plan**: Pro\n\n**Run ID**: `af2103fb-e58c-48c8-9010-04ba85f40b28`\n\n</details>\n\n<details>\n<summary>📥 Commits</summary>\n\nReviewing files that changed from the base of the PR and between e3648988254f88bc67283554323165e59a2cde7e and ed87846808a62d847a084d03e651dad2b00aa354.\n\n</details>\n\n<details>\n<summary>📒 Files selected for processing (3)</summary>\n\n* `packages/app-desktop/integration-tests/models/SettingsScreen.ts`\n* `packages/app-desktop/integration-tests/settings.spec.ts`\n* `packages/lib/services/ReportService.test.ts`\n\n</details>\n\n</details>\n\n---\n\n\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nAdds a client-side search UI to the Config screen: new search state fields, a SearchInput in ConfigScreen, search/filtering and result UI in Sidebar (including keyboard navigation and settingKey selection), focus/scroll helpers for settings, new unit tests, and updated ignore/git rules for the test file.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Build & Ignore** <br> `/.eslintignore`, `/.gitignore`|Add ignore entries to exclude the new Sidebar test file `packages/app-desktop/gui/ConfigScreen/Sidebar.test.js`.|\n|**Shared config state** <br> `packages/lib/components/shared/config/config-shared.ts`|Add `searchQuery: string` and `searching: boolean` to `ConfigScreenState` and initialise them in `defaultScreenState`.|\n|**ConfigScreen** <br> `packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx`|Integrate `SearchInput` and pass `searchQuery`/`topContent` to `Sidebar`; add search state handlers; wrap each setting row with identifiable `id` attributes; add focus/scroll helpers to target settings by key.|\n|**Sidebar** <br> `packages/app-desktop/gui/ConfigScreen/Sidebar.tsx`|Add `topContent` and `searchQuery` props; compute grouped search results and `sectionsForNav`; render search results and no-results state; update keyboard navigation and selection to include optional `settingKey`; capture fixed sidebar width; export new styled components.|\n|**Tests** <br> `packages/app-desktop/gui/ConfigScreen/Sidebar.test.js`, `packages/app-desktop/gui/ConfigScreen/Sidebar.test.tsx`|Add tests verifying search filtering, no-results UI, and that selecting a search result emits `onSelectionChange` with the correct `section` and `settingKey`.|\n|**Integration tests & other** <br> `packages/app-desktop/integration-tests/models/SettingsScreen.ts`, `packages/app-desktop/integration-tests/settings.spec.ts`, `packages/lib/services/ReportService.test.ts`|Adjust integration locators and accessibility assertions to use sidebar anchors/`aria-current`; extend one test timeout.|\n\n## Sequence Diagram\n\n```mermaid\nsequenceDiagram\n actor User\n participant SearchInput as \"SearchInput (UI)\"\n participant ConfigScreen as \"ConfigScreen (Container)\"\n participant Sidebar as \"Sidebar (Nav)\"\n participant SettingsList as \"DOM / Settings List\"\n\n User->>SearchInput: Type query\n SearchInput->>ConfigScreen: onSearchInputChange(query)\n ConfigScreen->>ConfigScreen: set searchQuery / set searching\n ConfigScreen->>Sidebar: pass searchQuery, topContent\n Sidebar->>Sidebar: compute searchResultGroups & sectionsForNav\n Sidebar->>SettingsList: render filtered sections & result items\n SettingsList->>User: display matching settings\n User->>SettingsList: click result item\n SettingsList->>Sidebar: trigger onClick (section, settingKey)\n Sidebar->>ConfigScreen: onSelectionChange(section, settingKey)\n ConfigScreen->>ConfigScreen: focusSettingByKey -> scroll/focus element\n```\n\n## Suggested labels\n\n`desktop`, `search`, `accessibility`\n\n## Suggested reviewers\n\n- mrjo118\n\n</details>\n\n<!-- walkthrough_end -->\n\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n<details>\n<summary>🚥 Pre-merge checks | ✅ 5 | ❌ 1</summary>\n\n### ❌ Failed checks (1 warning)\n\n| Check name | Status | Explanation | Resolution |\n| :----------------: | :--------- | :----------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |\n| Docstring Coverage | ⚠️ Warning | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |\n\n<details>\n<summary>✅ Passed checks (5 passed)</summary>\n\n| Check name | Status | Explanation |\n| :-----------------------------------: | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Title check | ✅ Passed | The title directly and clearly summarizes the main change: adding settings search functionality to the desktop config screen, resolving issue `#14763`. |\n| Description check | ✅ Passed | The description is well-related to the changeset, explaining both the problem and solution with clear details about sidebar-first search, test plans, and implementation approach. |\n| Linked Issues check | ✅ Passed | The PR fully implements the requirements from issue `#14763`: adds a search field to the Config screen, filters by setting label and description, and includes a clear button to reset the search. |\n| Out of Scope Changes check | ✅ Passed | All changes are scoped to the settings search feature. Minor updates to test timeout and integration test selectors are necessary adjustments to support the new search functionality. |\n| Pr Description Must Follow Guidelines | ✅ Passed | The PR description follows the repository's technical specification template with clear problem statement, solution breakdown, and comprehensive test plan. |\n\n</details>\n\n<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>\n\n</details>\n\n<!-- pre_merge_checks_walkthrough_end -->\n\n<!-- finishing_touch_checkbox_start -->\n\n<details>\n<summary>✨ Finishing Touches</summary>\n\n<details>\n<summary>🧪 Generate unit tests (beta)</summary>\n\n- [ ] <!-- {\"checkboxId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} --> Create PR with unit tests\n\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n\n<!-- pr_review_plan_action_start -->\n\n<details>\n<summary>📝 Coding Plan</summary>\n\n- [ ] <!-- {\"checkboxId\": \"6ad8a4e1-0b3a-4ea2-9b5b-d82c1f47d1f2\"} --> Generate coding plan for human review comments\n\n</details>\n\n<!-- pr_review_plan_action_end -->\n\n<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=laurent22/joplin&utm_content=14781)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.\n\n<details>\n<summary>❤️ Share</summary>\n\n- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)\n- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)\n- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)\n- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)\n\n</details>\n\n<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>\n\n<!-- tips_end -->\n\n<!-- internal state start -->\n\n\n<!-- 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 -->\n\n<!-- internal state end -->\n<!-- usage_tips_start -->\n\n> [!TIP]\n> <details>\n> <summary>CodeRabbit can suggest fixes for GitHub Check annotations.</summary>\n> \n> Configure the `reviews.tools.github-checks` setting to adjust the time to wait for GitHub Checks to complete.\n> \n> </details>\n\n<!-- usage_tips_end -->",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4070461914/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": {
"id": 347564,
"client_id": "Iv1.6aaafe4fe882736b",
"slug": "coderabbitai",
"node_id": "A_kwHOB96YWc4ABU2s",
"owner": {
"login": "coderabbitai",
"id": 132028505,
"node_id": "O_kgDOB96YWQ",
"avatar_url": "https://avatars.githubusercontent.com/u/132028505?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/coderabbitai",
"html_url": "https://github.com/coderabbitai",
"followers_url": "https://api.github.com/users/coderabbitai/followers",
"following_url": "https://api.github.com/users/coderabbitai/following{/other_user}",
"gists_url": "https://api.github.com/users/coderabbitai/gists{/gist_id}",
"starred_url": "https://api.github.com/users/coderabbitai/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/coderabbitai/subscriptions",
"organizations_url": "https://api.github.com/users/coderabbitai/orgs",
"repos_url": "https://api.github.com/users/coderabbitai/repos",
"events_url": "https://api.github.com/users/coderabbitai/events{/privacy}",
"received_events_url": "https://api.github.com/users/coderabbitai/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"name": "coderabbitai",
"description": "# Transforming Code Reviews with AI\r\n\r\n## Features\r\n\r\n**Automated Reviews**: Continuous reviews of the pull requests including incremental commits. \r\n\r\n**Summarization**: Generates high-level summary and a technical walkthrough of the PR changes. \r\n\r\n**Line-by-line review**: Provides line-by-line suggestions committable with one click.\r\n\r\n**Codebase verification**: Verifies the impact on the overall codebase and identifies missing changes.\r\n\r\n**Insights into your code**: Ask any questions on your codebase within the pull request \r\n\r\n**Chat about your code** : Chat with the bot around your code. The more you chat, the smarter it gets.\r\n\r\n**Issue Validation**: Validates the PR against the linked issues and identifies other related issues \r\n\r\n\r\n\r\n",
"external_url": "https://coderabbit.ai?utm_source=cr_app&utm_medium=github",
"html_url": "https://github.com/apps/coderabbitai",
"created_at": "2023-06-14T15:47:27Z",
"updated_at": "2026-03-14T07:58:44Z",
"permissions": {
"actions": "read",
"checks": "write",
"contents": "write",
"discussions": "read",
"issues": "write",
"members": "read",
"metadata": "read",
"pull_requests": "write",
"statuses": "write"
},
"events": [
"issues",
"issue_comment",
"label",
"organization",
"pull_request",
"pull_request_review",
"pull_request_review_comment",
"pull_request_review_thread",
"release",
"repository"
]
}
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4070692890",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4070692890",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4070692890,
"node_id": "IC_kwDOBLftOs7yodga",
"user": {
"login": "github-actions[bot]",
"id": 41898282,
"node_id": "MDM6Qm90NDE4OTgyODI=",
"avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/github-actions%5Bbot%5D",
"html_url": "https://github.com/apps/github-actions",
"followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
"organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
"repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
"events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
"received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
"type": "Bot",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-16T21:27:24Z",
"updated_at": "2026-03-18T19:17:38Z",
"body": "****CLA Assistant Lite bot**** All contributors have signed the CLA ✍️ ✅",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4070692890/reactions",
"total_count": 1,
"+1": 1,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": {
"id": 15368,
"client_id": "Iv1.05c79e9ad1f6bdfa",
"slug": "github-actions",
"node_id": "MDM6QXBwMTUzNjg=",
"owner": {
"login": "github",
"id": 9919,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=",
"avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/github",
"html_url": "https://github.com/github",
"followers_url": "https://api.github.com/users/github/followers",
"following_url": "https://api.github.com/users/github/following{/other_user}",
"gists_url": "https://api.github.com/users/github/gists{/gist_id}",
"starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/github/subscriptions",
"organizations_url": "https://api.github.com/users/github/orgs",
"repos_url": "https://api.github.com/users/github/repos",
"events_url": "https://api.github.com/users/github/events{/privacy}",
"received_events_url": "https://api.github.com/users/github/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"name": "GitHub Actions",
"description": "Automate your workflow from idea to production",
"external_url": "https://help.github.com/en/actions",
"html_url": "https://github.com/apps/github-actions",
"created_at": "2018-07-30T09:30:17Z",
"updated_at": "2026-05-05T14:51:38Z",
"permissions": {
"actions": "write",
"administration": "read",
"artifact_metadata": "write",
"attestations": "write",
"checks": "write",
"code_quality": "write",
"contents": "write",
"copilot_requests": "write",
"deployments": "write",
"discussions": "write",
"issues": "write",
"merge_queues": "write",
"metadata": "read",
"models": "read",
"packages": "write",
"pages": "write",
"pull_requests": "write",
"repository_hooks": "write",
"repository_projects": "write",
"security_events": "write",
"statuses": "write",
"vulnerability_alerts": "read"
},
"events": [
"branch_protection_rule",
"check_run",
"check_suite",
"create",
"delete",
"deployment",
"deployment_status",
"discussion",
"discussion_comment",
"fork",
"gollum",
"issues",
"issue_comment",
"label",
"merge_group",
"milestone",
"page_build",
"public",
"pull_request",
"pull_request_review",
"pull_request_review_comment",
"push",
"registry_package",
"release",
"repository",
"repository_dispatch",
"status",
"watch",
"workflow_dispatch",
"workflow_run"
]
}
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4070713737",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4070713737",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4070713737,
"node_id": "IC_kwDOBLftOs7yoimJ",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-16T21:32:11Z",
"updated_at": "2026-03-17T04:05:55Z",
"body": "I have read the CLA Document and I hereby sign the CLA",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4070713737/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4071045022",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4071045022",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4071045022,
"node_id": "IC_kwDOBLftOs7ypzee",
"user": {
"login": "laurent22",
"id": 1285584,
"node_id": "MDQ6VXNlcjEyODU1ODQ=",
"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/laurent22",
"html_url": "https://github.com/laurent22",
"followers_url": "https://api.github.com/users/laurent22/followers",
"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
"organizations_url": "https://api.github.com/users/laurent22/orgs",
"repos_url": "https://api.github.com/users/laurent22/repos",
"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
"received_events_url": "https://api.github.com/users/laurent22/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-16T22:31:16Z",
"updated_at": "2026-03-16T22:31:16Z",
"body": "Hello, do not quote the bot when putting your signature, simply put the signature in its own comment.\r\n\r\nAlso please don't forget to review the rabbit's comments",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4071045022/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4072196567",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4072196567",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4072196567,
"node_id": "IC_kwDOBLftOs7yuMnX",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-17T04:07:01Z",
"updated_at": "2026-03-17T04:07:01Z",
"body": "recheck",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4072196567/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4072254147",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4072254147",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4072254147,
"node_id": "IC_kwDOBLftOs7yuarD",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-17T04:27:04Z",
"updated_at": "2026-03-17T04:27:18Z",
"body": "Hi laurent22, thanks for the clarification! \r\n\r\nI've signed the CLA in a separate comment. I'll also review the rabbit's comments and make the necessary updates.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4072254147/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4077630199",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4077630199",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4077630199,
"node_id": "IC_kwDOBLftOs7zC7L3",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-17T19:55:08Z",
"updated_at": "2026-03-17T19:55:08Z",
"body": "I've made the following fixes:\r\n\r\n- **Coderabbitai comment 1**: For setting search hits, I now detect `advanced` settings, expand Advanced first when needed, then scroll/focus in the state callback.\r\n- **Coderabbitai comment 2**: I kept the inline visual layout, but fixed accessibility by switching the sidebar semantics to navigation (no tablist role-mixing) and ensuring one visible section item remains keyboard-focusable (`tabIndex={0}` fallback when selection is filtered out).\r\n- **CI follow-up**: Updated settings integration test selectors/assertions to match the new sidebar semantics, and added a `20000ms` timeout to the slow `ReportService` decryption test to reduce flaky failures.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4077630199/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4077633910",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4077633910",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4077633910,
"node_id": "IC_kwDOBLftOs7zC8F2",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-17T19:55:52Z",
"updated_at": "2026-03-17T19:55:52Z",
"body": "If you have any suggestions for further improvements or adjustments, I’d be glad to keep improving the Settings search experience!",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4077633910/reactions",
"total_count": 1,
"+1": 1,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4077675971",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4077675971",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4077675971,
"node_id": "IC_kwDOBLftOs7zDGXD",
"user": {
"login": "personalizedrefrigerator",
"id": 46334387,
"node_id": "MDQ6VXNlcjQ2MzM0Mzg3",
"avatar_url": "https://avatars.githubusercontent.com/u/46334387?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/personalizedrefrigerator",
"html_url": "https://github.com/personalizedrefrigerator",
"followers_url": "https://api.github.com/users/personalizedrefrigerator/followers",
"following_url": "https://api.github.com/users/personalizedrefrigerator/following{/other_user}",
"gists_url": "https://api.github.com/users/personalizedrefrigerator/gists{/gist_id}",
"starred_url": "https://api.github.com/users/personalizedrefrigerator/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/personalizedrefrigerator/subscriptions",
"organizations_url": "https://api.github.com/users/personalizedrefrigerator/orgs",
"repos_url": "https://api.github.com/users/personalizedrefrigerator/repos",
"events_url": "https://api.github.com/users/personalizedrefrigerator/events{/privacy}",
"received_events_url": "https://api.github.com/users/personalizedrefrigerator/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-17T20:03:23Z",
"updated_at": "2026-03-17T20:03:23Z",
"body": "How well does this work with a screen reader (see [Joplin: Testing with a screen reader](https://joplinapp.org/help/dev/accessibility#testing-with-a-screen-reader))?\r\n\r\n**Note**: Previously, the settings screen followed the [tabpanel pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/) to expose the settings tabs and content to screen readers and other accessibility tools. Some of the existing search components (e.g. go-to-anything) currently follow the [combobox pattern](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/).",
"author_association": "COLLABORATOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4077675971/reactions",
"total_count": 1,
"+1": 1,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4081430858",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4081430858",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4081430858,
"node_id": "IC_kwDOBLftOs7zRbFK",
"user": {
"login": "laurent22",
"id": 1285584,
"node_id": "MDQ6VXNlcjEyODU1ODQ=",
"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/laurent22",
"html_url": "https://github.com/laurent22",
"followers_url": "https://api.github.com/users/laurent22/followers",
"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
"organizations_url": "https://api.github.com/users/laurent22/orgs",
"repos_url": "https://api.github.com/users/laurent22/repos",
"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
"received_events_url": "https://api.github.com/users/laurent22/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-18T10:37:18Z",
"updated_at": "2026-03-18T10:37:18Z",
"body": "Hello, for information, the issue has been updated with detailed spec on how it should work:\r\n\r\nhttps://github.com/laurent22/joplin/issues/14763\r\n\r\nIf you would like to continue working on this pull request, please check the spec.",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4081430858/reactions",
"total_count": 1,
"+1": 1,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4081521269",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4081521269",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4081521269,
"node_id": "IC_kwDOBLftOs7zRxJ1",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-18T10:51:10Z",
"updated_at": "2026-03-18T10:51:10Z",
"body": "Hi laurent22, thanks for the heads-up! I’ll take a look at the updated spec and see what needs to be adjusted in this PR.\r\n\r\nHi personalizedrefrigerator, thanks for pointing this out and for providing the full context and references, I really appreciate it.\r\nI’ll verify how the new search behaves with a screen reader and review whether the current interaction still makes sense from an accessibility perspective, especially since parts of the search flow may now be closer to a combobox-style pattern.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4081521269/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4084948201",
"html_url": "https://github.com/laurent22/joplin/pull/14781#issuecomment-4084948201",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14781",
"id": 4084948201,
"node_id": "IC_kwDOBLftOs7ze1zp",
"user": {
"login": "slimuCS",
"id": 125249013,
"node_id": "U_kgDOB3cl9Q",
"avatar_url": "https://avatars.githubusercontent.com/u/125249013?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/slimuCS",
"html_url": "https://github.com/slimuCS",
"followers_url": "https://api.github.com/users/slimuCS/followers",
"following_url": "https://api.github.com/users/slimuCS/following{/other_user}",
"gists_url": "https://api.github.com/users/slimuCS/gists{/gist_id}",
"starred_url": "https://api.github.com/users/slimuCS/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/slimuCS/subscriptions",
"organizations_url": "https://api.github.com/users/slimuCS/orgs",
"repos_url": "https://api.github.com/users/slimuCS/repos",
"events_url": "https://api.github.com/users/slimuCS/events{/privacy}",
"received_events_url": "https://api.github.com/users/slimuCS/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-18T19:02:42Z",
"updated_at": "2026-03-18T19:02:42Z",
"body": "Thanks for the updated spec and the clarification.\r\n\r\nSince the new spec changes the behavior quite a bit, I reworked the feature in a new PR based on that updated direction: #14820.\r\n\r\nI think that will make the review much clearer than continuing to evolve this older PR, so this one can be closed.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4084948201/reactions",
"total_count": 1,
"+1": 1,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
}
]
}