Files
clide/clide-web/Makefile
T
jpmschweitzerandClaude Opus 4.6 56a8ea4ba4 feat: add clide-web package replacing ttyd + zellij
Python web server that wraps Clide for browser access. Replaces the
previous ttyd (C binary) + zellij (Rust binary) stack with a single
FastAPI application using tmux for session persistence.

Key features:
- WebSocket ↔ PTY bridge via tmux attach
- Project switching via /projects/<name> URL routing
- Vendored xterm.js for offline LAN operation
- Auto-respawn on Clide exit (tmux pane-died hook)
- Setup wizard for first-run configuration
- No scrollbar (TUI manages its own scrolling)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:03:43 +01:00

87 lines
2.8 KiB
Makefile

.PHONY: setup run dev test lint format clean help start-server stop-server restart-server status-server install-server logs-server
PYTHON := python3.12
VENV := .venv
BIN := $(VENV)/bin
SERVICE := clide-web
BLUE := \033[0;34m
GREEN := \033[0;32m
YELLOW := \033[0;33m
RESET := \033[0m
help:
@printf "$(BLUE)clide-web Commands$(RESET)\n\n"
@printf "$(YELLOW)Development$(RESET)\n"
@printf " $(GREEN)setup$(RESET) Create venv, install deps, run setup wizard\n"
@printf " $(GREEN)run$(RESET) Run the web server (foreground)\n"
@printf " $(GREEN)dev$(RESET) Run with auto-reload\n"
@printf " $(GREEN)test$(RESET) Run tests\n"
@printf " $(GREEN)lint$(RESET) Run ruff linter\n"
@printf " $(GREEN)format$(RESET) Run ruff formatter\n"
@printf " $(GREEN)clean$(RESET) Remove build artifacts\n"
@printf "\n$(YELLOW)Service$(RESET)\n"
@printf " $(GREEN)install-server$(RESET) Install systemd service (requires sudo)\n"
@printf " $(GREEN)start-server$(RESET) Start the systemd service\n"
@printf " $(GREEN)stop-server$(RESET) Stop the systemd service\n"
@printf " $(GREEN)restart-server$(RESET) Restart the systemd service\n"
@printf " $(GREEN)status-server$(RESET) Show service status\n"
@printf " $(GREEN)logs-server$(RESET) Tail service logs\n"
# --- Development ---
setup:
$(PYTHON) -m venv $(VENV)
$(BIN)/pip install --upgrade pip
$(BIN)/pip install -e ".[dev]"
$(BIN)/clide-web-setup
@printf "$(GREEN)Setup complete!$(RESET)\n"
run:
$(BIN)/clide-web
dev:
$(BIN)/uvicorn clide_web.server:app --reload --host 0.0.0.0 --port 8888
test:
$(BIN)/pytest tests/
lint:
$(BIN)/ruff check clide_web/
format:
$(BIN)/ruff format clide_web/
$(BIN)/ruff check --fix clide_web/
clean:
rm -rf $(VENV) dist/ build/
rm -rf .pytest_cache/ .mypy_cache/ .ruff_cache/
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
# --- Service ---
install-server:
@if [ "$$(id -u)" -ne 0 ]; then printf "$(YELLOW)Run with sudo: sudo make install-server$(RESET)\n"; exit 1; fi
cp ../deploy/clide-web.service /etc/systemd/system/$(SERVICE).service
systemctl daemon-reload
systemctl enable $(SERVICE)
@printf "$(GREEN)Service installed. Run 'make start-server' to start.$(RESET)\n"
start-server:
sudo systemctl start $(SERVICE)
@systemctl is-active --quiet $(SERVICE) && printf "$(GREEN)$(SERVICE) started$(RESET)\n" || printf "$(YELLOW)Failed to start. Check: make logs-server$(RESET)\n"
stop-server:
sudo systemctl stop $(SERVICE)
@printf "$(GREEN)$(SERVICE) stopped$(RESET)\n"
restart-server:
sudo systemctl restart $(SERVICE)
@systemctl is-active --quiet $(SERVICE) && printf "$(GREEN)$(SERVICE) restarted$(RESET)\n" || printf "$(YELLOW)Failed to restart. Check: make logs-server$(RESET)\n"
status-server:
@systemctl status $(SERVICE) --no-pager || true
logs-server:
journalctl -u $(SERVICE) -f --no-pager