ungitgoassets

package module
v0.0.0-...-aba8a4d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 22, 2026 License: MIT Imports: 1 Imported by: 0

README

Ungit-Go

Ungit-Go is a Go port of Ungit focused on a smaller runtime memory footprint, while preserving the familiar Ungit web UI and Git workflow. It also adds built-in system / dark / light themes and includes additional compatibility, reliability, and cross-platform fixes developed as part of the port.

Ungit-Go runs as a single native executable and opens the UI in your normal browser. Node.js, npm, Electron, and node_modules are not required at runtime.

Ungit-Go is an independent derivative project. It is not the original Ungit project and is not endorsed by its upstream maintainers.

Why Ungit-Go?

The original Ungit architecture uses a Node.js backend. Ungit-Go replaces that backend with Go while intentionally keeping the browser experience and Git CLI semantics familiar.

Key differences:

  • Smaller runtime memory footprint. The Go server measured roughly 8–10 MB RSS in the port's Linux smoke tests, depending on active repository watching. Treat this as a development measurement, not a guaranteed ceiling.
  • Single runtime binary. Browser assets and built-in UI components are embedded in the executable.
  • No Node.js runtime dependency. Only a compatible system git executable is required.
  • System, dark, and light themes. The UI can follow the OS preference or be switched explicitly.
  • Additional fixes. The port includes fixes and hardening around remote address parsing, session handling, configuration edge cases, Git credential integration, watcher lifecycle, path handling, and cross-platform builds.
  • Real Git compatibility. Ungit-Go executes the user's installed Git CLI instead of replacing Git with a partial reimplementation.

Scope

Ungit-Go targets the following Ungit functionality:

Area Status
Existing Ungit web UI Supported
Git read/write workflows Supported
REST API compatibility Supported within the port scope
Configuration Supported; legacy .ungitrc is intentionally retained
Repository/file watching Supported
Git credentials Supported
Authentication Supported
Browser mode Supported
Built-in UI components Supported
Third-party Ungit plugins Not supported
Electron application Not supported

Internal browser globals, API field names, and some configuration names still use ungit where required for compatibility with the inherited frontend. Product-facing naming is Ungit-Go.

Requirements

For normal use:

  • Git 2.34 or newer
  • A supported desktop/server OS
  • A web browser

Node.js is only needed if you want to modify and rebuild the browser frontend from source.

Install

Download the binary for your operating system and architecture from the Ungit-Go releases page, make it executable when necessary, and run it.

Linux example:

chmod +x ungit-go-linux-amd64
./ungit-go-linux-amd64

Or build it yourself:

git clone https://github.com/egomarker/ungit-go.git
cd ungit-go
go build -trimpath -o ungit-go ./cmd/ungit-go
./ungit-go

Ungit-Go starts its local HTTP server and opens the normal system browser by default.

Common options

./ungit-go --port=8448
./ungit-go --no-launchBrowser
./ungit-go --forcedLaunchPath=/path/to/repository
./ungit-go --theme=dark
./ungit-go --theme=light
./ungit-go --theme=system
./ungit-go --gitBinPath=/path/to/git/bin

Use ./ungit-go --help for the complete option list.

Configuration

For compatibility with existing Ungit installations, Ungit-Go continues to read ~/.ungitrc (or the corresponding home-directory file on Windows).

Example:

{
  "port": 8448,
  "launchBrowser": true,
  "theme": "system",
  "autoFetch": true,
  "maxConcurrentGitOperations": 4
}

theme accepts system, dark, or light. A theme selected in the UI is stored locally in the browser and takes precedence for that browser.

Authentication

Ungit-compatible username/password authentication is available when exposing the server beyond the default localhost-only setup. Example:

{
  "authentication": true,
  "users": {
    "alice": "change-this-password"
  }
}

Do not expose Ungit-Go directly to an untrusted network without understanding the bind, authentication, and reverse-proxy configuration.

Git credentials

Ungit-Go uses the same executable as a temporary Git credential helper when browser interaction is required. Existing Git credential helpers, SSH agents, HTTPS tokens, and normal Git configuration continue to work.

GPG signing

Ungit-Go delegates signing to system Git/GPG. You can configure Git normally:

git config --global commit.gpgsign true

or set "isForceGPGSign": true in .ungitrc. Pinentry/GPG-agent configuration is handled outside Ungit-Go.

External merge tools

See MERGETOOL.md.

Building and testing

Backend/runtime development only requires Go:

go test ./...
go vet ./...
go test -race ./...
go build -trimpath -o ungit-go ./cmd/ungit-go

Frontend development additionally requires Node.js/npm:

npm install
npm run build:frontend

The generated frontend assets are committed because they are embedded into release binaries.

See CONTRIBUTING.md and ARCHITECTURE.md for more detail.

Upstream and attribution

Ungit-Go is derived from Ungit, originally created by Fredrik Norén and developed by the Ungit contributors. The port intentionally preserves substantial frontend code and behavior from that project.

The original Ungit MIT copyright/license notice is preserved. New Ungit-Go work is separately copyrighted by Egomarker and released under the MIT License. See LICENSE.md and NOTICE.md.

License

MIT. Because this is a derivative work, the repository contains both the preserved upstream Ungit MIT notice and the Ungit-Go/Egomarker MIT notice. See LICENSE.md.

Documentation

Index

Constants

This section is empty.

Variables

FS contains the production browser assets and built-in Ungit-Go components.

The development-only Node/npm toolchain builds these frontend files; the Go runtime only serves the generated artifacts.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
cmd
ungit-go command
internal
git

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL