BINARY := tm BINARY_SERVER := tm_server CMD := ./cmd/task-master CMD_SERVER := ./cmd/tm-server VERSION_PKG := task/internal/version GIT_HASH := $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown) LDFLAGS := -X $(VERSION_PKG).BuildVersion=$(GIT_HASH) # Default: Go workspace bin (e.g. ~/go/bin). Override with: make install PREFIX=... GOPATH ?= $(shell go env GOPATH) PREFIX ?= $(GOPATH) INSTALL_BIN := $(PREFIX)/bin DEV_HOME := $(CURDIR)/.dev-home .PHONY: build build-server build-all web run run-dev run-server-dev install uninstall test version demo build: go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) $(CMD) web: cd web && npm ci && npm run build build-server: web go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY_SERVER) $(CMD_SERVER) # Build server binary without rebuilding frontend (uses committed/placeholder dist). build-server-go: go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY_SERVER) $(CMD_SERVER) build-all: build build-server run: build ./bin/$(BINARY) # Sandbox: isolated config/data under ./.dev-home (does not touch ~/.config). # YouTrack is not part of the local test environment — use tm_server instead. run-dev: build @rm -rf $(DEV_HOME)/.local/share/task-master/projects/youtrack TASK_MASTER_HOME=$(DEV_HOME) ./bin/$(BINARY) # Web test environment: SQLite demo against tm_server only (no YouTrack). # Seeds project "Test" + samples; login admin/admin (alice/alice as member). run-server-dev: build-server-go @rm -f $(DEV_HOME)/.local/share/task-master/task-master.db \ $(DEV_HOME)/.local/share/task-master/task-master.db-wal \ $(DEV_HOME)/.local/share/task-master/task-master.db-shm @rm -rf $(DEV_HOME)/.local/share/task-master/projects/youtrack TASK_MASTER_HOME=$(DEV_HOME) TM_ADMIN_USER=admin TM_ADMIN_PASSWORD=admin \ TM_SEED_DEMO=1 TASK_MASTER_SECRET=dev-secret \ ./bin/$(BINARY_SERVER) -listen :8080 install: build install -d $(INSTALL_BIN) install -m 755 bin/$(BINARY) $(INSTALL_BIN)/$(BINARY) @echo "installed $(INSTALL_BIN)/$(BINARY)" uninstall: rm -f $(INSTALL_BIN)/$(BINARY) @echo "removed $(INSTALL_BIN)/$(BINARY)" test: go test ./... version: build ./bin/$(BINARY) version # Record a full feature walkthrough (requires vhs: https://github.com/charmbracelet/vhs) demo: vhs demo.tape