
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
      <title>Portalworkers GmbH</title>
      <link>https://portalworkers.com/blog</link>
      <description>Portalworkers is an IT consultancy based in Gaißach, near Munich and close to the Alps. We build modern business applications.</description>
      <language>en-us</language>
      <managingEditor>address@yoursite.com (Portalworkers GmbH)</managingEditor>
      <webMaster>address@yoursite.com (Portalworkers GmbH)</webMaster>
      <lastBuildDate>Fri, 13 Nov 2026 00:00:00 GMT</lastBuildDate>
      <atom:link href="https://portalworkers.com/tags/github-actions/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://portalworkers.com/blog/ghdash-multi-repo-dashboard</guid>
    <title>What is waiting for me? GHDash, a dashboard for pull requests and deployments across repositories</title>
    <link>https://portalworkers.com/blog/ghdash-multi-repo-dashboard</link>
    <description>GitHub shows pull requests, checks and deployment approvals one repository at a time. GHDash puts everything that waits on me into one list across repositories, on the Mac, the iPhone and in the terminal.</description>
    <content:encoded><![CDATA[<div><img src="https://portalworkers.com/static/ghdash/ghdash-collage.webp" alt="GHDash on the Mac, the iPhone and in the terminal (demo data)" width="2400" height="970"/></div><p>On a typical day I work in many repositories at once: different clients, different projects, and on some of them a product that spans several repositories itself. PRs wait for reviews, Dependabot opens PRs everywhere, and deployments wait for an approval. GitHub shows all of that one repository at a time, so my day used to start with a round of tabs.</p><p>All I want to know is: <strong>what is waiting for me right now?</strong> So I had Claude Code build <a href="https://github.com/markuspalme/gh-dash">GHDash</a>, a small dashboard that answers exactly that, as a Mac app, an iPhone app and a terminal app.</p><div><img src="https://portalworkers.com/static/ghdash/mac.png" alt="GHDash on the Mac (demo data)" width="2584" height="2122"/></div><h2 class="content-header" id="sorted-by-whose-turn-it-is">Sorted by whose turn it is</h2><ul><li><strong>My open pull requests</strong>: my PRs that need something from me, such as conflicts, requested changes or failing checks.</li><li><strong>Awaiting my review</strong>: review requests, plus Dependabot PRs nobody has been asked to review.</li><li><strong>Waiting on reviewers</strong>: my PRs with nothing left for me to do.</li><li><strong>Pending actions</strong>: running workflows and deployments waiting for approval.</li></ul><p>Splitting &quot;needs me&quot; from &quot;waiting on others&quot; turned out to be the most useful part. The Dock badge and notifications only count things I can act on, and filters hide drafts and failing Dependabot PRs. Routine approvals, like a green Dependabot bump or a test deployment, are a swipe away, just like archiving a mail.</p><p>The terminal version runs in a <a href="https://herdr.dev">herdr</a> pane next to my Claude Code sessions. It reports itself as &quot;blocked&quot; while something waits on me.</p><h2 class="content-header" id="two-things-i-learned">Two things I learned</h2><ul><li><strong>Count only the latest run of each check.</strong> GitHub keeps every run on a commit, but its PR page shows only the latest one. If you count all runs, a re-run that passed still shows up as failing.</li><li><strong>Borrow a login where you can.</strong> The Mac app simply uses <code>gh auth token</code>. On iOS, an OAuth app would need approval from every organization owner, so the app takes a personal access token instead.</li></ul><h2 class="content-header" id="built-from-prompts">Built from prompts</h2><p>All of the code was written by Claude Code from about a hundred prompts. Most were things I noticed while using the dashboard: &quot;it flickers when toggling&quot;, &quot;conflicts are my responsibility to fix&quot;. For a personal tool, that&#x27;s the ideal workflow: the requirements come from daily use, and a fix is running a few minutes later.</p><p>The code is on <a href="https://github.com/markuspalme/gh-dash">GitHub</a>. <code>make demo</code> runs it with made-up data.</p>]]></content:encoded>
    <pubDate>Fri, 13 Nov 2026 00:00:00 GMT</pubDate>
    <author>address@yoursite.com (Portalworkers GmbH)</author>
    <category>github</category><category>github-actions</category><category>dependabot</category><category>swift</category><category>macos</category><category>ios</category><category>claude</category><category>ai</category>
  </item>

    </channel>
  </rss>
