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 web-build 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 @mkdir -p internal/webembed/dist && touch internal/webembed/dist/.gitkeep # Rebuild frontend only (assumes web/node_modules already installed). web-build: cd web && npm run build @mkdir -p internal/webembed/dist && touch internal/webembed/dist/.gitkeep build-server: web go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY_SERVER) $(CMD_SERVER) # Build server binary without rebuilding frontend (uses local webembed/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 50 demo projects; wires TUI projects Test + Website Relaunch with write tokens. # Login admin/admin (alice/alice as member). Then: make run-dev → Y pull. run-server-dev: web-build 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 \ "$(DEV_HOME)/.local/share/task-master/projects/Test" \ "$(DEV_HOME)/.local/share/task-master/projects/Website Relaunch" 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