v0.14 · File Palette now cross-reporead the notes

Less context switching.
More shipping.

A docked cockpit for your open work. PRs ranked by what blocks whom, CI that surfaces the real error, worktrees that let Claude Code fix it without touching your main checkout. One keybinding brings it all up.

Download for macOS38 MBWindows · LinuxCtrl+Super+Shift+G to toggle · free for individuals
BorgDock23 open2 failing
Ranked by priority — most urgent first
acme/prdockReady to merge
Add rate-limit backoff for GitHub polling
JSgh-polling-backoffslot-2approved
#1284
acme/prdockBuild failing·requested 3h ago
Migrate cache layer to SQLite WAL
mrsqlite-wal2 failing
#1279
acme/prdockReview overdue·Stale 2d
Settings: add per-repo priority weights
hsper-repo-priorityin progress
#1271
acme/prdockReview requested
Quick Review overlay keyboard shortcuts
ctquick-review-keys
#1266
acme/prdockAwaiting review · 1d
File Palette: fuzzy match on path segments
JSpalette-fuzzyslot-4changes requested
#1260
Updated 12s ago · 23 open · 2 failing
BorgDock9 open
Focus7
PRs23
Work Items14
Files
SQL
AllMineRequestedDraftNeeds rebasesort · priority ↓
Ready to merge · 2
acme/prdock2 approvals · green
Add rate-limit backoff for GitHub polling
JSgh-polling-backoffslot-2approved
#1284
acme/prdock1 approval · green
Refactor: extract PR store into its own module
arextract-pr-storeapproved
#1282
Needs attention · 3
acme/prdockintegration-tests·18 min ago
Migrate cache layer to SQLite WAL
mrsqlite-wal2 failing
#1279
acme/prdockRequested 2d ago
Settings: add per-repo priority weights
hsper-repo-priorityreview overdue
#1271
acme/prdockAwaiting rework · 1d
File Palette: fuzzy match on path segments
JSpalette-fuzzychanges requestedchanges requested
#1260
In review · 4
acme/prdockReview requested
Quick Review overlay keyboard shortcuts
ctquick-review-keys
#1266
acme/uiDraft · 4h ago
Rework onboarding wizard for ADO setup
nowizard-adodraft
#1258
acme/tauri-dbOpened 2h ago
Fix: worktree detach leaves stale refs
pwworktree-detach-fix
#1254
acme/prdockOpened 1d ago
Docs: caching strategy and WAL trade-offs
aydocs-caching
#1249
Updated 12s ago · 23 open · 2 failing
GitHub PRs
Ranked live by eight priority signals, grouped by what actually blocks you.
Azure DevOps
Work items auto-linked by branch or commit, edited inline beside your PRs.
Claude Code
A worktree per failing check, with the real error pre-filled as the prompt.
SQL & Files
Saved connections, read-only by default. Fuzzy match across every clone.
Ctrl+Super+Shift+GToggle dock
Ctrl+F8File palette
Ctrl+F10SQL window
Ctrl+Super+Shift+FToggle flyout
Signed installersNo telemetry by defaultOffline-firstMIT licensed
FOCUS

Triage by urgency, not by order opened.

Every PR scored on eight signals — approvals, failing checks, review age, contributor weight, blast radius. The tab re-sorts in real time so the next thing to do is always on top.

Ready to merge
Approved + green + mergeable. Surfaces first.
Build failing
Your PR with red checks, ranked up by how long it’s been broken.
Review overdue
Requested > 2 days ago — team SLA signal on the card.
Stale draft
Your own WIP. Kept out of everyone else’s way.
BorgDock23 open2 failing
Ranked by priority — most urgent first
acme/prdockReady to merge
Add rate-limit backoff for GitHub polling
JSgh-polling-backoffslot-2approved
#1284
acme/prdockBuild failing·requested 3h ago
Migrate cache layer to SQLite WAL
mrsqlite-wal2 failing
#1279
acme/prdockReview overdue·Stale 2d
Settings: add per-repo priority weights
hsper-repo-priorityin progress
#1271
acme/prdockReview requested
Quick Review overlay keyboard shortcuts
ctquick-review-keys
#1266
acme/prdockAwaiting review · 1d
File Palette: fuzzy match on path segments
JSpalette-fuzzyslot-4changes requested
#1260
Updated 12s ago · 23 open · 2 failing
DIFF

Split view. vs HEAD or vs base, one toggle.

Full diff viewer with file tree, split or unified, and a HEAD/base switch so you can tell what changed locally from what the PR is actually proposing.

BorgDock — Diff#1279
6 files · +147 −58
services/cache.ts+18 −11
services/cache.test.ts+42 −0
stores/pr-store.ts+8 −3
src/db/wal.rs+57 −22
migrations/003_wal.sql+18 −0
docs/CACHING.md+4 −22
services/cache.ts+18−11splitunifiedvs HEADvs base
main · c4a19e2
38 export class CacheStore {
39 private db: Database
40
41 async getCache(key: string) {
42 return await this.db.query(
43 'SELECT value FROM cache WHERE key = ?',
44 [key],
45 )
46 }
47 }
sqlite-wal · 9d71f04
38 export class CacheStore {
39 private db: Database
40 private wal: WalWriter
41
42+ async getCache(key: string): Promise<Cached | null> {
43+ const row = await this.db.one(
44+ 'SELECT value, expires_at FROM cache WHERE key = ?',
45+ [key],
46+ )
47+ if (!row || row.expires_at < Date.now()) return null
48 return row.value as Cached
49 }
50 }
split view · +18 −11 · 1 of 6 files
CI · CLAUDE CODE

See the failing line. Fix it without leaving the dock.

BorgDock streams check logs, extracts the first real error — not the last 2,000 noisy lines — and hands the failure to Claude Code inside a pre-spawned git worktree. You review. It codes.

log-parser.tsFinds the real error in 2,847 lines in < 50ms
worktrees/Slot-3 ready. Main checkout untouched.
handoff.mdError + diff + affected files → Claude Code prompt
CI · test-integration
failed 43s
× Parsed 1 error from 2,847 log lines
services/cache.test.ts :42:17
Expected: "sqlite:///:memory:"
Received: undefined
at Object.<anonymous> (services/cache.test.ts:42:17)
at async runTest (runner.ts:88:5)
worktree ready · slot-3
FILE PALETTE · Ctrl+F8

One fuzzy search across every repo you've cloned.

Match paths across all clones in ~/src. Preview with syntax highlighting. Jump straight to the PR that touched the file last.

4 repos · 847 files
services/cache.tsprdock
services/cache.test.tsprdock
stores/pr-store.tsprdock
src/db/wal.rstauri-db
migrations/003_wal.sqltauri-db
docs/CACHING.mdprdock
types/cache.tsprdock
services/cache.ts · TypeScript
import { Database } from './db'

export class CacheStore {
  private db: Database

  async getCache(key: string) {
    return await this.db.query(
      'SELECT value FROM cache WHERE key = ?',
      [key],
    )
  }
}
↑↓ navigate↵ openCtrl+F8 toggleroot: ~/src
PR DETAIL

All ten checks, one surface.

Every run in a flat list — click Send to Claude on the red ones.

BorgDock9 open
#1279build failingin reviewslot-3

Migrate cache layer to SQLite WAL

mrmira.raines opened 6 hours ago·sqlite-walmain
Overview
Commits1
Files6
Checks10
Reviews3
Comments3
lint1m 04s
unit-tests48s
typecheck32s
integration-testsservices/cache.test.ts:42 — 2 failed4m 17s
integration-tests · windowsservices/cache.test.ts:42 — 2 failed5m 02s
build · macos2m 11s
build · windows3m 44s
build · linux— queued
e2e · chromium6m 09s
coverage+0.4% vs base
a · r · m
services/cache.ts · +18 −11 · worktree slot-3
AZURE DEVOPS

Work items. In the dock. Finally.

Auto-linked by branch or commit. Sprint, state, tags, implementing PR.

BorgDock23 open2 failing
Active· User Story#10823
PR sidebar should survive display-sleep
Sprint 47Bug-bash
Committed· Bug#10817
Log parser: surface first TypeScript error not last
Sprint 47Parser
New· Task#10801
Add per-repo priority weights to Settings
Sprint 48Settings
Active· User Story#10798
Quick Review: approve / request-changes keybindings
Sprint 47Review
Resolved· Bug#10792
SQL window: results table jitter on sort
Sprint 47SQL
Azure DevOps · acme/product · synced 8s ago
QUERY · Ctrl+F10

A SQL window where you already are.

SQL Server, Postgres, MySQL. Run, scroll, copy. Read-only by default; saved connections; results cached for instant re-scroll.

SQL · prod-readonly
SELECT author, COUNT(*) AS prs,
AVG(EXTRACT('hours' FROM merged_at - opened_at)) AS avg_hrs
FROM pull_requests
WHERE merged_at > NOW() - INTERVAL '14 days'
GROUP BY author ORDER BY prs DESC;
authorprsavg_hrs
mira.raines289.4
hiro.sato2414.2
cal.travers195.8
jen.sanders1722.1
ayo.fela1411.5
pete.wu128.3
noa.lind931.6
7 rows · 23ms
FLOATING BADGE · Ctrl+Super+Shift+F

Hide the dock. Keep the signal.

Always-on-top capsule. Count and worst status. Click to expand, double-click to reopen the full dock.

23 open · 2 failing
last sync 12s ago
18 open · 0 failing
last sync 12s ago
11 open · 0 failing
last sync 12s ago
KEYBOARD

Every action has a key.

Review a whole queue without lifting your hand. The command palette remembers the ones you forget.

Ctrl+Super+Shift+GToggle dock
Ctrl+Super+Shift+FToggle flyout
Ctrl+F7Worktree palette
Ctrl+F8File palette (cross-repo)
Ctrl+F9Command palette
Ctrl+F10SQL workbench
J / KNext / previous PR
OOpen PR on GitHub
A / SApprove / skip (Quick Review)
MMerge when green
SHIPPING

What's new.

Full changelog →
v0.14.0·Apr 18 · 2026
File Palette goes cross-repo
Fuzzy match across every clone in ~/src. Preview with syntax highlighting.
v0.13.2·Apr 04 · 2026
Priority scoring rewrite
Eight-signal model. 40% less false-urgent on large queues.
v0.13.0·Mar 22 · 2026
Quick Review mode
One-keybinding approval flow across a queue of PRs.

Dock it. Close every other tab.

Free for individuals. macOS · Windows · Linux. No cloud account, no tracking — reads your Git provider directly.

Download BorgDockSee all features