Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/jorgeurtubiam-ship-it/Gulin_ia/llms.txt

Use this file to discover all available pages before exploring further.

GuLiN Terminal is built from a single repository that combines a Go backend, an Electron main process, and a React/TypeScript frontend. The task build tool orchestrates every step — from installing dependencies to producing signed, distributable packages. This page walks you through setting up your environment and running the most common build commands.

Prerequisites

You need four core tools before you can build GuLiN. On Linux and Windows an additional Zig compiler is required for CGO static linking.
macOS has no platform-specific dependencies beyond the core tools below. Install them in any order.
ToolVersionInstall
Go1.22+go.dev/doc/install
Node.js22 LTSnodejs.org/en/download
Tasklatesttaskfile.dev/installation

Clone and Build

1

Clone the repository

git clone https://github.com/gulindev/gulin.git
cd gulin
2

Install all dependencies

Run task init once after cloning (and any time you suspect dependency issues). This installs npm packages, runs go mod tidy, and installs docs dependencies.
task init
3

Start the development server

Launch GuLiN with Vite’s dev server and Hot Module Reloading enabled. The app will reload automatically as you edit frontend code.
task dev
task dev automatically builds the Go backend (gulinsrv + wsh) before starting Electron, so you don’t need to run task build:backend separately on a clean checkout.

All Task Commands

The full build system is defined in Taskfile.yml. Use task --list to see a live description of every available task.
CommandDescription
task initInstall all dependencies (npm + go mod tidy + docs npm)
task devDevelopment mode — starts Electron via the Vite dev server with HMR
task startStandalone mode — builds and runs without a dev server; no hot reload
task packageProduction build + installer; output artifacts are placed in make/
USE_SYSTEM_FPM=1 task packageLinux ARM64 packaging (requires system fpm installed via Gem)
task build:backendBuild both gulinsrv and wsh binaries into dist/bin/
task build:schemaRegenerate the JSON configuration schema in dist/schema/
task generateRegenerate TypeScript bindings from the Go backend (runs build:schema first)
task check:tsTypeScript typecheck across the frontend and Electron main process
task cleanRemove the make/ and dist/ directories
task docsiteStart the internal docsite dev server (docs/)
All task commands that build the app will automatically run npm install and go mod tidy if their sources have changed since the last run, so you rarely need to manage dependencies manually after task init.

Debugging

Frontend

Open Chrome DevTools in the running app with the keyboard shortcut:
  • macOS: Cmd+Option+I
  • Linux / Windows: Ctrl+Option+I
All console.log output and runtime errors appear in the Console tab. The Sources tab has full source-map support for both the React frontend and the Electron preload scripts.

Backend Logs

Both the Electron (Node.js) backend and the Go gulinsrv process write to the same log file when running a development build:
~/.gulin-dev/gulinapp.log
Tail this file in a separate terminal to see live backend output:
tail -f ~/.gulin-dev/gulinapp.log

Releasing

GuLiN releases are managed entirely through GitHub Actions. The workflow is:
1

Bump Version

Navigate to the Actions tab and trigger the Bump Version workflow. Choose a SemVer bump (patch, minor, major, or none) and whether this is a prerelease. The workflow creates a new Git tag automatically.
2

Build Helper

Once a tag is pushed, the Build Helper workflow starts automatically. It calls task package on macOS, Linux, and Windows runners — building gulinsrv, wsh, the Vite frontend, and invoking electron-builder to produce signed, distributable packages. Artifacts land in a draft GitHub Release.
3

Review and publish

Download the draft artifacts, test them locally, then edit the GitHub Release to add a changelog and click Publish. The Publish Release workflow handles pushing to Homebrew, WinGet, Chocolatey, and Snap automatically.
See RELEASES.md in the repository for full details on update channels, package manager automation, and the electron-updater auto-update system.

Build docs developers (and LLMs) love