github.com##.AppHeader-CopilotChat
github.com# #copilot-dashboard-entrypoint
github.com##.prc-ButtonGroup-ButtonGroup-vcMeG.DiffLinesMenu-module__diff-button-container--UrMbh
github.com##.DiffHeaderAskCopilotButton-module__askCopilotButton--XnBQK.prc-Button-ButtonBase-c50BI
github.com## #copilot-md-menu-anchor-new_comment_field
github.com# #a[href^="https://copilot-workspace.githubnext.com"]
github.com## #copilot-md-menu-anchor-pull_request_body
github.com##.lnwIhU.Box-sc-g0xbh4-0 > .octicon-copilot.octicon > path
github.com# #li:has(> ul > li#query-builder-test-result-ask-copilot)
github.com# #li.ActionList-sectionDivider[aria-hidden="true"]
github.com# #div:has(> button[data-testid="copilot-ask-menu"])
github.com# #div[data-test-id="copilot-actions-chat-button"]
github.com# #div.dropdown-divider:has(+span[data-target="copilot-diff-entry.menuItemsSlot"])
github.com# #span[data-target="copilot-diff-entry.menuItemsSlot"]
github.com# #react-partial[partial-name="copilot-code-chat"]
github.com##.copilotPreview__container
github.com# #button[id^="copilot-md-menu-anchor"]
github.com# #div:has(> button[id^="copilot-md-menu-anchor"]) + hr
github.com# #li:has(> ul > li#query-builder-test-result-chat-with-copilot)
github.com# #span:has(> p > span[data-assignee-name="Copilot"])
github.com# #div:has(> div > div > a[data-testid="open-in-copilot-agent-button"])
github.com# #command-palette-item[data-item-id="2918418660"]
github.com# #li.prc-ActionList-Divider-rsZFG
github.com# #li:has-text(/Ask about this diff/)
github.com# #div[class*="CopilotWorkspaceButton"]
github.com# #li[class="ActionListItem ActionListItem--hasSubItem"]:has(ul > li[data-item-id="repo_settings_copilot_swe_agent"])
github.com# #svg.octicon.octicon-copilot
github.com# #span[class="ActionListItem-label"]:has-text(Copilot)
github.com# #li:has(> div > span:has-text(/Explain error/))
github.com# #div[class*="CopilotAgentModeButton"]
github.com# #button:has(> span:has-text(/Try the new experience/))
github.com# #g-emoji[alias="sparkles"]
github.com# #inline-machine-translation
github.com##.AppHeader-CopilotChat
github.com# #copilot-dashboard-entrypoint
github.com##.prc-ButtonGroup-ButtonGroup-vcMeG.DiffLinesMenu-module__diff-button-container--UrMbh
github.com##.DiffHeaderAskCopilotButton-module__askCopilotButton--XnBQK.prc-Button-ButtonBase-c50BI
github.com## #copilot-md-menu-anchor-new_comment_field
github.com# #a[href^="https://copilot-workspace.githubnext.com"]
github.com## #copilot-md-menu-anchor-pull_request_body
github.com##.lnwIhU.Box-sc-g0xbh4-0 > .octicon-copilot.octicon > path
github.com# #li:has(> ul > li#query-builder-test-result-ask-copilot)
github.com# #li.ActionList-sectionDivider[aria-hidden="true"]
github.com# #div:has(> button[data-testid="copilot-ask-menu"])
github.com# #div[data-test-id="copilot-actions-chat-button"]
github.com# #div.dropdown-divider:has(+span[data-target="copilot-diff-entry.menuItemsSlot"])
github.com# #span[data-target="copilot-diff-entry.menuItemsSlot"]
github.com# #react-partial[partial-name="copilot-code-chat"]
github.com##.copilotPreview__container
github.com# #button[id^="copilot-md-menu-anchor"]
github.com# #div:has(> button[id^="copilot-md-menu-anchor"]) + hr
github.com# #li:has(> ul > li#query-builder-test-result-chat-with-copilot)
github.com# #span:has(> p > span[data-assignee-name="Copilot"])
github.com# #div:has(> div > div > a[data-testid="open-in-copilot-agent-button"])
github.com# #command-palette-item[data-item-id="2918418660"]
github.com# #li.prc-ActionList-Divider-rsZFG
github.com# #li:has-text(/Ask about this diff/)
github.com# #div[class*="CopilotWorkspaceButton"]
github.com# #li[class="ActionListItem ActionListItem--hasSubItem"]:has(ul > li[data-item-id="repo_settings_copilot_swe_agent"])
github.com# #svg.octicon.octicon-copilot
github.com# #span[class="ActionListItem-label"]:has-text(Copilot)
github.com# #li:has(> div > span:has-text(/Explain error/))
github.com# #div[class*="CopilotAgentModeButton"]
github.com# #button:has(> span:has-text(/Try the new experience/))
github.com# #g-emoji[alias="sparkles"]
github.com# #inline-machine-translation
I just learned how to do some uBlock origin cosmetic selectors to remove elements on the page that invite me to use AI or take up screen real estate offering pointless AI summaries.
So many web sites use auto-generated CSS class names that you can't match on the actual classes. And you can't be sure that it will actually be 3 <div>s from the root or anything like that.
What I really like is the :upward() selector. I can basically match something like <h3>Try our assistant</h3> and then append :upward(3) to tell uBlock that regardless of what their names are, block the entire div 3 levels up because I found the matching text down here.
One of the things I'm hiding is a graphical button, so I use its aria-label to match it.
Here's some examples:
example.com##.genaiPageSummaryButton:upward(8)
example.com##span:has-text("Open the Assistant"):upward(3)
example.com##a[aria-label="Open automated answers"]:upward(2)
I just learned how to do some uBlock origin cosmetic selectors to remove elements on the page that invite me to use AI or take up screen real estate offering pointless AI summaries.
So many web sites use auto-generated CSS class names that you can't match on the actual classes. And you can't be sure that it will actually be 3 <div>s from the root or anything like that.
What I really like is the :upward() selector. I can basically match something like <h3>Try our assistant</h3> and then append :upward(3) to tell uBlock that regardless of what their names are, block the entire div 3 levels up because I found the matching text down here.
One of the things I'm hiding is a graphical button, so I use its aria-label to match it.
Here's some examples:
example.com##.genaiPageSummaryButton:upward(8)
example.com##span:has-text("Open the Assistant"):upward(3)
example.com##a[aria-label="Open automated answers"]:upward(2)