GTK3 doesn't implement the xdg-decoration Wayland protocol, so KWin always adds server-side decorations regardless of gtk_window_set_decorated(FALSE). GDK_BACKEND=x11 forces XWayland where MOTIF_WM_HINTS reliably removes decorations. Revisit when Flutter moves to GTK4 or implements xdg-decoration natively. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
149 lines
4.2 KiB
Makefile
149 lines
4.2 KiB
Makefile
# clide — local dev targets. CI scripts in ci/ shell out to these.
|
|
#
|
|
# Single Flutter package at the repo root. Native supporter tools
|
|
# (ptyc, future peers) live in their own directories.
|
|
|
|
INSTALL_DIR ?= $(HOME)/.local/bin
|
|
|
|
VERSION_BASE ?= $(shell awk -F': *' '/^version:/ {gsub(/[" ]/,"",$$2); print $$2; exit}' pubspec.yaml)
|
|
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
|
DIRTY := $(shell git diff --quiet HEAD 2>/dev/null || echo .dirty)
|
|
VERSION ?= $(VERSION_BASE)+$(COMMIT)$(DIRTY)
|
|
DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
|
|
.PHONY: help
|
|
help: ## Show this help.
|
|
@awk 'BEGIN {FS = ":.*##"} /^[a-zA-Z0-9_-]+:.*##/ {printf " \033[36m%-22s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
|
|
# -- app (Flutter) -------------------------------------------------------
|
|
|
|
.PHONY: run
|
|
run: ## Launch the Flutter desktop app.
|
|
GDK_BACKEND=x11 LD_LIBRARY_PATH=$(CURDIR)/native/linux-x64$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH} flutter run -d linux
|
|
|
|
.PHONY: pubget
|
|
pubget: ## flutter pub get.
|
|
flutter pub get
|
|
|
|
.PHONY: analyze
|
|
analyze: ## flutter analyze.
|
|
flutter analyze
|
|
|
|
.PHONY: format
|
|
format: ## dart format --set-exit-if-changed.
|
|
dart format --set-exit-if-changed .
|
|
|
|
.PHONY: test
|
|
test: ## Fast: analyze + format + unit + widget + golden (<60s).
|
|
ci/test.sh
|
|
|
|
.PHONY: test-core
|
|
test-core: ## Core subsystem tests (IPC, PTY, git, pane registry).
|
|
ci/test_core.sh
|
|
|
|
.PHONY: test-a11y
|
|
test-a11y: ## A11y contract (semantic coverage + keyboard + contrast + i18n).
|
|
ci/test_a11y.sh
|
|
|
|
.PHONY: test-integration
|
|
test-integration: ## Integration tests (real app boot; xvfb on headless Linux).
|
|
ci/test_integration.sh
|
|
|
|
.PHONY: test-e2e
|
|
test-e2e: ## End-to-end Playwright smoke.
|
|
ci/test_e2e.sh
|
|
|
|
.PHONY: test-all
|
|
test-all: test-core test test-a11y test-integration test-e2e ## Everything, sequentially.
|
|
|
|
.PHONY: coverage
|
|
coverage: ## flutter test --coverage + lcov summary.
|
|
ci/test_coverage.sh
|
|
|
|
.PHONY: smoke-bundle
|
|
smoke-bundle: ## Build Linux release bundle and run it under xvfb for 5s.
|
|
ci/smoke_bundle.sh
|
|
|
|
# -- web UI harness ------------------------------------------------------
|
|
|
|
.PHONY: ui-dev
|
|
ui-dev: ## Build web WASM + start localhost:4280 in the background.
|
|
tools/ui/build.sh
|
|
tools/ui/serve.sh
|
|
|
|
.PHONY: ui-stop
|
|
ui-stop: ## Stop the background web server.
|
|
tools/ui/stop.sh
|
|
|
|
.PHONY: ui-smoke
|
|
ui-smoke: ## Build + serve + run Playwright smoke + stop.
|
|
tools/ui/build.sh
|
|
tools/ui/serve.sh
|
|
@sh -c 'trap "tools/ui/stop.sh >/dev/null 2>&1" EXIT; cd tools/ui && npx playwright test smoke.spec.ts'
|
|
|
|
.PHONY: build-linux
|
|
build-linux: ## flutter build linux (desktop bundle).
|
|
flutter build linux
|
|
|
|
.PHONY: build-macos
|
|
build-macos: ## flutter build macos (desktop bundle).
|
|
flutter build macos
|
|
|
|
# -- ptyc (C supporter tool) ---------------------------------------------
|
|
|
|
PTYC_PRESENT := $(shell test -f ptyc/Makefile && echo yes || echo no)
|
|
|
|
.PHONY: ptyc-build
|
|
ptyc-build: ## Build the ptyc PTY-spawn helper.
|
|
ifeq ($(PTYC_PRESENT),yes)
|
|
$(MAKE) -C ptyc
|
|
else
|
|
@echo "(ptyc/ not scaffolded yet; skipping)"
|
|
endif
|
|
|
|
.PHONY: ptyc-test
|
|
ptyc-test: ## Run ptyc smoke tests (SCM_RIGHTS round-trip).
|
|
ifeq ($(PTYC_PRESENT),yes)
|
|
$(MAKE) -C ptyc test
|
|
else
|
|
@echo "(ptyc/ not scaffolded yet; skipping)"
|
|
endif
|
|
|
|
.PHONY: ptyc-clean
|
|
ptyc-clean: ## Clean ptyc build artefacts.
|
|
ifeq ($(PTYC_PRESENT),yes)
|
|
$(MAKE) -C ptyc clean
|
|
else
|
|
@echo "(ptyc/ not scaffolded yet; skipping)"
|
|
endif
|
|
|
|
# -- security -------------------------------------------------------------
|
|
|
|
.PHONY: security
|
|
security: ## Dart advisory review + ptyc source review.
|
|
@echo "security: Dart advisories reviewed manually before pubspec.yaml bumps;"
|
|
@echo " ptyc is reviewed by reading it (tiny libc-only C)."
|
|
|
|
# -- pre-push gate --------------------------------------------------------
|
|
|
|
.PHONY: decisions-validate
|
|
decisions-validate: ## Parser dry-run over decisions/*.md.
|
|
pql decisions validate
|
|
|
|
.PHONY: push-check
|
|
push-check: decisions-validate test-core test test-a11y ## Pre-push gate.
|
|
|
|
.PHONY: hooks
|
|
hooks: ## Install the repo's git hooks.
|
|
git config core.hooksPath .githooks
|
|
@echo "hooks installed (core.hooksPath = .githooks)"
|
|
|
|
# -- housekeeping ---------------------------------------------------------
|
|
|
|
.PHONY: clean
|
|
clean: ## Remove build artefacts.
|
|
rm -rf build .dart_tool
|
|
$(MAKE) ptyc-clean
|
|
|
|
.DEFAULT_GOAL := help
|