Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Workflow Search

Adds a text search box to the workflow sidebar on GitHub Actions pages, so you no longer have to click Show more workflows… repeatedly to find a workflow.

How it works

A content script runs on github.com Actions pages. On page load it fetches the full workflow list from GitHub's own same-origin sidebar endpoint — /{owner}/{repo}/actions/workflows_partial?query=&page=N — pulling pages in parallel batches until one comes back empty. No clicking Show more workflows…, no DOM mutation, no waiting for re-renders.

Matches render in the extension's own list under the search box. GitHub's sidebar is left completely untouched, so nothing shifts, nothing re-renders, and focus never jumps.

It uses your existing session cookies (same-origin fetch), so it works on private repos with no API token.

Install (Chrome / Edge / Brave)

  1. Clone this repo.
  2. Open chrome://extensions.
  3. Enable Developer mode (top right).
  4. Click Load unpacked and select this folder.
  5. Open any repo's Actions page — https://github.com/<owner>/<repo>/actions.

Chrome keeps unpacked extensions loaded across restarts. To share with teammates, they repeat the same steps (or you zip the folder and publish it to the Chrome Web Store).

Publishing to the Chrome Web Store

./build.sh                          # -> dist/github-workflow-search-<version>.zip
python3 tools/make-store-assets.py  # -> store/screenshot-*.png at 1280x800

Bump version in manifest.json before every upload — the store rejects a re-used version. Listing copy, the single-purpose statement, and permission justifications live in docs/store-listing.md.

Capture store screenshots on a public repository only. They are published publicly, and workflow names from a private repo disclose internal systems. docs/*.png and store/ are gitignored for the same reason.

Install (Firefox)

about:debugging#/runtime/this-firefoxLoad Temporary Add-on → pick manifest.json. Firefox drops temporary add-ons on restart.

Usage

  • Click the box (or tab into it) and type. Matching is case-insensitive and every whitespace-separated token must match, so deploy prod finds Deploy to Production.
  • / move through matches, Enter opens the highlighted one.
  • Esc clears the search.
  • The line under the box shows matches / total · mode. Matched characters are highlighted in the results.

Fuzzy search

Click the extension's toolbar icon to toggle Fuzzy search (on by default). The setting lives in chrome.storage.sync, so it follows your Chrome profile and applies to any open tab immediately.

Mode Behaviour
Fuzzy (on) Each token matches as a subsequence — dtprod finds Deploy to Production. Results are ranked, scoring word-boundary hits and runs of consecutive characters highest.
Exact (off) Each token must appear literally — dtprod finds nothing, deploy prod still works.

Userscript alternative

If you would rather not install an extension, the same logic runs as a Tampermonkey / Violentmonkey userscript: create a new script with

// ==UserScript==
// @name        GitHub Workflow Search
// @match       https://github.com/*
// @run-at      document-idle
// @grant       none
// ==/UserScript==

then paste the contents of content.js, and inject styles.css via GM_addStyle or a <style> element.

Notes / limits

  • GitHub Enterprise Server: add your host to matches in manifest.json.
  • workflows_partial is an internal GitHub endpoint, not a documented API. If it is ever renamed, fetchPage() in content.js needs updating; until then the extension falls back to filtering whatever the sidebar already rendered.
  • Pagination stops after 40 pages (MAX_PAGES), fetched 4 at a time (PAGE_BATCH).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages