Anuluj subskrypcję interfejsu graficznego Git i uruchom SauceCtrl lokalnie na Linuxie.
SauceCtrl to klient Git o otwartym kodzie źródłowym, napędzany przez Bun, przeznaczony dla Linuxa, posiadający pasek boczny z wieloma repozytoriami, wykres komitetów, terminal PTY oraz możliwość pakowania w formacie AppImage, bez miesięcznej opłaty.
Lokalny klient Git o otwartym kodzie źródłowym, przeznaczony do zadań w środowisku Linux: kilka repozytoriów widocznych jednocześnie, jedno okno oraz brak regularnej opłaty subskrypcyjnej.
Rozwijający, którzy przechodzą między Debianem, Fedorą a innymi dystrybucjami, często zachowują tę samą praktykę na różnych maszynach – otwierają kilka klonów naraz – i chcą mieć szybki przegląd stanu gałęzi bez konieczności obsługi oddzielnych okien. Wiele komercyjnych interfejsów graficznych dla Git zakłada pracę nad jednym projektem naraz. Taki model sprawdza się słabo, gdy codzienna praca obejmuje kilka repozytoriów.
Ceny subskrypcji stanowią kolejną presję. Narzędzia takie jak GitKraken są funkcjonalne, ale komunikat o odnowieniu może postawić ważniejsze pytanie: jeśli rzeczywiste potrzeby to przełączanie się między gałęziami, wykres komitetów, przygotowywanie zmian oraz terminal, czy to usprawiedliwia kolejną miesięczną opłatę?
SauceCtrl daje na to krótką odpowiedź. Jest licencjonowany pod licencją MIT, ma otwarty kod źródłowy i działa na lokalnej maszynie, a nie jako klient SaaS w chmurze.
Kupowanie dystrybucji jest powszechne na komputerach stacjonarnych z Linuxem: ten sam programista może używać Debiana na stanowisku pracy, Fedory na laptopie oraz wersji niezmiennej na urządzeniu podróżnym. Aplikacja, która instaluje się poprawnie we wszystkich tych systemach bez konieczności korzystania z prywatnego repozytorium pakietów, stanowi element wymagań produktu, a nie dodatek późniejszy.
Dlaczego teraz
Dwa zmiany w ekosystemie sprawiły, że budowa w skali weekendu stała się realna.
GitHub CLI (gh) już obsługuje autoryzację oraz operacje związane z GitHubem bezpośrednio z wiersza poleceń. W aplikacji stacjonarnej nie ma żadnych specjalnych mechanizmów OAuth – wystarczy uruchomić gh auth login, ukończyć procedurę w przeglądarce i kontynuować. SauceCtrl umieszcza prawdziwy terminal u dołu okna właśnie do wykonywania tych poleceń.
Bun oferuje szybki środowisko wykonawcze JavaScript z wbudowanym SQLite i FFI. Jest to istotne, ponieważ zintegrowany terminal wymaga prawdziwego PTY, a nie tylko estetycznego elementu interfejsu, a node-pty nie działa w Bun. Dlatego aplikacja otwiera PTY za pomocą openpty poprzez bun:ffi. To ograniczenie jest nietypowe, ale efektem jest terminal nadający się do użycia.
Współczesne edytory wspomagane przez sztuczną inteligencję skróciły również czas kompilacji. W poprzednich latach brakowało czasu na stworzenie osobistej interfejsu graficznego do Git; połączenie Bun, gh oraz kodowania wspomaganego przez agenta sprawiło, że ta sama idea stała się realizowalna.
Jak to działa
SauceCtrl prezentuje interfejs renderowany w przeglądarce wewnątrz okna na pulpicie, podczas gdy proces Bun na hostowym komputerze wykonywa rzeczywistą pracę – uruchamia git, komunikuje się z gh, zarządza terminalami oraz przechowuje metadane projektu w SQLite w katalogu ~/.sauce-ctrl/.
Wersja 0.1 obejmuje:
- Bar boczną do zarządzania wieloma projektami, umożliwiającą dodawanie repozytoriów i przepinanie się między nimi bez restartowania aplikacji
- Kontrolę gałęzi obejmującą referencje lokalne i zdalne wraz z funkcją pobierania plików z menu głównego
- Historię komitetów w formie grafu DAG opartego na pasach, podobnego do tego używanego przez klientów płatnych
- Okna z detalami komitetów pokazujące komunikat, autora, datę, poprzednie komitety oraz statystyki dla poszczególnych plików
- Procesy przygotowania i zapisu komitetów, w tym funkcje dodawania komunikatu i zapisywania zmian
- Zintegrowany terminal umieszczony w aktywnym repozytorium, służący do wykonywania poleceń takich jak
gh auth loginlub innych - Szablon konfiguracji GitHuba umożliwiający zainstalowanie i uwierzytelnienie narzędzia
ghbezpośrednio z interfejsu użytkownika
Nic egzotycznego – po prostu wszystko to, co jest potrzebne na co dzień, w jednym miejscu.
Część AppImage
Wysyłanie kolejnej delikatnej ścieżki instalacji dostosowanej do konkretnego dystrybucji było niepożądane. Dlatego SauceCtrl jest dostarczany jako AppImage: jeden plik do pobrania i uruchomienia, który łączy aplikację z środowiskiem wykonawczym Bun. Dane projektu i ustawienia nadal znajdują się w ~/.sauce-ctrl/, niezależnie od tego, czy uruchamiasz go z źródeł, czy z AppImage.
Kompilacja z źródeł przy użyciu:
git clone https://github.com/rohit-gh/sauce-ctrl.git
cd sauce-ctrl
bun install
bun run build:appimage
Wynik znajduje się w katalogu release/SauceCtrl-x86_64.AppImage. Skrypt kompilacyjny może również skopiować go do folderu Pobrane i nadać mu uprawnienia do wykonywania. Nadal wymagany jest system git (oraz gh, jeśli istotne są funkcje GitHuba), ale różnice w narzędziach zarządzania pakietami pomiędzy dystrybucjami w dużej mierze znikają.
Składniki (dla ciekawskich)
Ruch terminalowy przez WebSockets jest izolowany w dedykowanym podprocesie Bun. Przechowywanie tej ścieżki wewnątrz serwera HTTP Nitro w praktyce powodowało zatrzymywanie połączeń; repozytorium dokumentuje rozwiązanie tymczasowe dla czytelników, którzy chcą uzyskać informacje diagnostyczne.
Zmień to na swoje
Ponieważ projekt jest otwarty, zespoły mogą zmieniać ikony, tematy, klonować strukturę projektu lub tworzyć własne pliki AppImage. Dostępne są również pliki kontekstowe skierowane do agentów, takie jak AGENTS.md, oraz reguły Cursor, które ułatwiają uporządkowaną pomoc.
Celem nie jest dorównywanie funkcjonalnościom wszystkim komercyjnym klientom. Celem jest istnienie kilku repozytoriów, jedno interfejs użytkownika, pakietowanie typowe dla systemu Linux oraz brak konieczności subskrypcji. Jeśli to odpowiada twoim wymaganiom, sklonuj repozytorium SauceCtrl na GitHubie (użytkownik rohit-gh, projekt sauce-ctrl) pod licencją MIT. Wszelkie problemy i prośby o zmiany są mile widziane, gdy coś się zepsuje lub brakuje określonego procesu pracy.
Powiązane materiały
- Resumable Islands on Bun: Lekcje projektowania z frameworka Stoneware — Jak framework oparty na serwerze traktuje HTML jako standard, ogranicza działanie JavaScript do obszarów typu „resumable islands” oraz zajmuje się eksportem statycznym, błędami, CSP i wdrażaniem.
- Bun 1.4 – wbudowane funkcje, które mogą zastąpić sharp, Puppeteer, node-pty i inne — Praktyczny przegląd wbudowanych funkcji Bun 1.4 do obsługi obrazów, przeglądarek, Markdowna, zadań cron, terminala, skryptów równoległych i testów, oraz sposobów bezpiecznego wypróbowania ich w rzeczywistych projektach.