dualfroz abb1e92064 feat: hide PRs you can neither act on nor learn from
Overview and the PRs tab listed open PRs from every repo, including ones
cloned for reference (e.g. pterodactyl) whose PRs you can't merge and
didn't author — pure noise. A PR is now surfaced only when you authored
it but can't merge it (your contribution elsewhere) or someone else
authored it and you can (awaiting your review); your own PR in a repo
you control, and strangers' PRs you can't touch, are filtered out.

Providers report viewer merge permission (RepoMeta.viewer_can_merge,
from GitHub/Gitea repo permissions and GitLab access level), stamped
onto each PR at refresh. The cache keeps every PR; the filter is applied
where the hub builds state.prs, so the per-repo detail view is unchanged.
2026-07-11 22:19:59 +02:00
2026-06-14 00:22:54 +02:00

Vulp

Multi-repository git workflow manager. Jeden terminal, cały workspace: stan wszystkich repozytoriów, batch sync, projekty, todos, PR-y/issues, statystyki — plus pełne, bezpromptowe CLI, którego mogą używać skrypty i asystenci AI.

  • TUI (vulp bez argumentów) — interfejs dla ludzi
  • CLI (vulp <komenda>) — dla ludzi, skryptów i AI; --json, kody wyjścia, zero interaktywnych pytań → pełna referencja: docs/cli.md

Instalacja

Gotowa binarka (Linux/Windows), bez Rusta:

# Linux
curl -fsSL https://raw.githubusercontent.com/dualfroz/fxg/main/install/vulp-installer.sh | bash
# Windows
irm https://raw.githubusercontent.com/dualfroz/fxg/main/install/vulp-installer.ps1 | iex

Albo ze źródeł: cargo install --path .

Pierwsze uruchomienie

vulp config        # ustaw workspace_root, username, email
vulp auth import   # zaimportuj konto z gh CLI (najprościej)
# albo: vulp auth add --provider github --token ghp_xxx
vulp               # odpal TUI

TUI

vulp otwiera hub z zakładkami (przełączanie: Tab/←→ albo 1-9):

# Zakładka Co robi
1 Overview bento-dashboard: statystyki workspace, projekty, top repo po commitach, scalony feed aktywności (commity + akcje vulpa), todos/PRs/issues
2 Repos tabela wszystkich rep: branch, dirty/ahead/behind, język, gwiazdki; multi-select do operacji hurtowych
3 Projects grupy repozytoriów (kolor + przypisania)
4 Todos zadania ręczne + zaimportowane skanem TODO/FIXME z kodu
5/6 PRs / Issues otwarte PR-y i issues ze wszystkich rep (cache, odświeżane [R])
7 Stats statystyki commitów per okres (1d–all)
8 Activity feed: commity + akcje wykonane vulpem
9 Settings edytor, schowek, workspace, konta, szablony repo, bulk import

Najważniejsze klawisze (pełna lista: ? w aplikacji):

  • m — kontekstowe menu akcji. Na każdej zakładce pokazuje wszystkie dostępne akcje z ich skrótami — nie musisz nic pamiętać.
  • Enter — szczegóły repo/projektu (historia, branch'e, pliki, diff, ustawienia zdalne, akcje: sync/release/collaboratorzy…)
  • Space zaznacz do batcha · s sync (pull/commit+push) · r release
  • / filtr · S sort i filtry · d/b/f tylko dirty/behind/ahead
  • N nowe repo (clone/create/link) · R odśwież metadane z API
  • o otwórz w edytorze · W w przeglądarce · y/u kopiuj ścieżkę/URL

CLI (skrypty + AI)

Każda operacja TUI ma odpowiednik w CLI. Przykłady:

vulp list --dirty --json          # co wymaga uwagi (JSON dla AI)
vulp status <repo>                # szczegóły jednego repo
vulp sync --project X --action commit-push -m "chore: update"
vulp release <repo> --tag v1.2.0
vulp todo add "tytuł" && vulp todo done 3
vulp pr create --repo R --title T --head branch
vulp repo collab <repo> <user> --role push
vulp init nazwa --private         # git init + repo na providerze + push
vulp stats --period 7d --json
vulp refresh                      # dociągnij meta/PR/issues z API

Kontrakt: --json na komendach odczytu, stdout = wynik / stderr = postęp, kody wyjścia 0 ok · 1 błąd · 2 złe użycie · 3 auth · 4 nie znaleziono. Szczegóły i przepisy: docs/cli.md.

Konfiguracja

vulp config (interaktywnie) albo edycja ~/.vulp/config.toml:

Pole Domyślnie Opis
workspace_root ~/projects katalog skanowany w poszukiwaniu rep
workspace_groups [] foldery-grupy, których dzieci są repami (np. ["clients", "opensource"])
data_dir ~/.vulp dane vulpa
default_provider github provider bez --provider
default_branch / default_visibility main / private dla nowych rep
editor $EDITOR/vim do o / otwierania plików
clipboard_cmd auto komenda kopiowania (wl-copy, xclip …)
username / email — tożsamość gita

Pliki danych

~/.vulp/
├── config.toml      # ustawienia
├── accounts.toml    # konta (tokeny w keyringu / .tokens 0600)
├── projects.toml    # projekty (grupy rep)
├── todos.toml       # zadania
├── labels.toml      # etykiety wyświetlania rep
├── bookmarks.toml / pins.toml
├── templates.toml   # szablony nowych rep
├── meta_cache.toml  # cache metadanych/PR/issues z API
└── activity.log     # log akcji vulpa (JSONL)

Providery

Provider --provider Zakres wsparcia
GitHub github pełny (repo, PR, issues, release, collaboratorzy, search)
GitLab gitlab podstawowy (tworzenie rep, collaboratorzy)
Gitea/Forgejo gitea podstawowy (tworzenie rep, collaboratorzy; wymaga --url)

Listy PR/issues są dziś GitHub-only — na innych providerach zakładki 5/6 będą puste (known limitation).

Licencja

MIT — patrz LICENSE.

S
Description
No description provided
Readme MIT
522 KiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 99.6%
Shell 0.2%
PowerShell 0.2%