Terminal dashboard for monitoring pull requests across Forgejo instances
  • Rust 98.8%
  • Nix 1.2%
Find a file
Bryan Thompson b44e692389
chore: docs, terminal fix, and CI improvements (#3)
## Summary

Updates the README with accurate documentation, adds a Development section for contributors, fixes a terminal size display issue, and scopes CI to avoid duplicate runs.

## Changes

- **Docs: README improvements**
  - Fix tokio link (was plain text while ratatui and forgejo-api were hyperlinked)
  - Replace HTML entities with Unicode equivalents
  - Clarify token scopes — removed notification scope (no features exist), reworded write scope recommendation
  - Complete auto-discovery docs — mentions push/admin access requirement, PR support filter, and exclusions
  - Add Ctrl-c to keybindings table (was implemented but undocumented)
  - Document 80x24 minimum terminal size requirement
  - Add Development section with Nix flake, Woodpecker CI, CONTRIBUTING.md, and SECURITY.md links

- **Fix: Terminal size display**
  - Use plain x instead of Unicode multiplication sign in terminal size requirement

- **CI: Woodpecker configuration**
  - Scope push events to main branch only to avoid duplicate PR runs on feature branches
2026-03-10 10:25:09 -07:00
.forgejo fix: allow manual CI triggers, apply rustfmt, fix clippy warnings (#2) 2026-03-10 08:51:54 -07:00
src fix: allow manual CI triggers, apply rustfmt, fix clippy warnings (#2) 2026-03-10 08:51:54 -07:00
.gitignore chore: prepare for open-source release on Codeberg 2026-03-10 07:07:59 -07:00
.woodpecker.yaml chore: docs, terminal fix, and CI improvements (#3) 2026-03-10 10:25:09 -07:00
Cargo.lock feat: add preview pane, CI status, and review status columns (#1) 2026-03-10 07:08:00 -07:00
Cargo.toml feat: add preview pane, CI status, and review status columns (#1) 2026-03-10 07:08:00 -07:00
CHANGELOG.md chore: prepare for open-source release on Codeberg 2026-03-10 07:07:59 -07:00
CONTRIBUTING.md chore: prepare for open-source release on Codeberg 2026-03-10 07:07:59 -07:00
flake.nix feat: initial project scaffold with hello world TUI 2026-03-07 17:38:26 -08:00
LICENSE chore: prepare for open-source release on Codeberg 2026-03-10 07:07:59 -07:00
README.md chore: docs, terminal fix, and CI improvements (#3) 2026-03-10 10:25:09 -07:00
screenshot.png feat: add preview pane, CI status, and review status columns (#1) 2026-03-10 07:08:00 -07:00
SECURITY.md chore: prepare for open-source release on Codeberg 2026-03-10 07:07:59 -07:00

fj-dash

Terminal dashboard for monitoring pull requests across Forgejo instances. Built with ratatui, tokio, and forgejo-api.

screenshot

Installation

cargo install --path .

Requires a terminal at least 80x24 characters.

Configuration

Create ~/.config/fj-dash/config.toml:

[[instance]]
name = "my-forgejo"
url = "https://forgejo.example.com"
token = "your-api-token"
repos = ["owner/repo1", "owner/repo2"]
  • name — Tab label shown in the UI
  • url — Base URL of your Forgejo instance
  • token — API token (Settings → Applications → Generate Token). Recommended scopes: repository (read/write), user (read), and issue (read/write). Read-only dashboards only need read:repository and read:user. Write scopes are recommended so you won't need to regenerate the token when future features (approve, merge, comment) land
  • repos — Optional. Omit to auto-discover repos you have push access to (excludes archived repos, mirrors, and repos without pull request support)

Multiple instances are supported; each gets its own tab:

[[instance]]
name = "work"
url = "https://git.work.com"
token = "token-a"
repos = ["team/backend", "team/frontend"]

[[instance]]
name = "personal"
url = "https://codeberg.org"
token = "token-b"

tea CLI Fallback

If no config.toml exists, fj-dash reads credentials from the tea CLI config (~/.config/tea/config.yml). All logins become instance tabs with automatic repo discovery.

Keybindings

Key Action
j / Down Move selection down
k / Up Move selection up
p Toggle preview pane
h / Left Previous preview tab (Description / Comments)
l / Right Next preview tab
PgDn Scroll preview down
PgUp Scroll preview up
Tab Next instance tab
Shift-Tab Previous instance tab
Enter Open PR in browser
r Refresh all instances
Ctrl-c Quit
q Quit

Preview Pane

Press p to open a split preview showing the selected PR's description (rendered from Markdown) and comments. Use h/l to switch tabs and PgDn/PgUp to scroll.

The preview pane can be configured in config.toml:

[preview]
open = true   # start with preview open (default: false)
width = 50    # pane width as % of terminal (default: 45, range: 20-80)

CI & Review Status

The PR table includes CI and Rev columns showing build and review status at a glance:

Symbol Meaning
Success / Approved
Failure / Changes requested
Pending
! Warning (CI only)
No status

CI status is fetched from commit statuses; review status from pull request reviews. Both load progressively after the PR list appears.

Pagination

PR fetching is limited to 50 PRs per repository (single API page). When a repo hits this limit, a footer indicator appears in the table. Full pagination is not yet implemented.

Commit Integrity

All commits are GPG signed. PRs are merged locally to ensure every commit in the history is cryptographically verified.

Development

A Nix flake provides the full toolchain (rustc, cargo, clippy, rustfmt, rust-analyzer). With direnv you can direnv allow and everything is ready.

cargo test
cargo clippy -- -D warnings
cargo fmt --check

CI runs these same checks via Woodpecker on every pull request and on pushes to main.

See CONTRIBUTING.md for the full contribution guide and SECURITY.md for the vulnerability disclosure policy.

Acknowledgments

Inspired by gh-dash, a beautiful GitHub dashboard for the terminal.

License

MIT