Files
Timmy-time-dashboard/Makefile
Claude abaa04fe3a Fix Mac trackpad scrolling; add make ip for phone testing
overflow: hidden creates a WebKit scroll container that absorbs trackpad
events before they reach scrollable children (.chat-log, .mc-sidebar).
Changed .mc-main and .mc-chat-panel > .card to overflow: clip, which
clips visually but does not create a scroll container, so trackpad events
propagate correctly to the nearest scrollable descendant.

Added min-height: 0 to .mc-sidebar so the flex item can shrink below its
content size and overflow-y: auto actually triggers scrolling.

Added `make ip` target that prints local network URLs the phone can
reach. The server already runs on 0.0.0.0 with --reload, so Python and
template changes auto-reload; CSS/static changes need a manual refresh.

https://claude.ai/code/session_01WFuf8fzKSWjH8ztF6E9jbj
2026-02-22 15:19:51 +00:00

86 lines
3.9 KiB
Makefile

.PHONY: install install-bigbrain dev test test-cov watch lint clean help
VENV := .venv
PYTHON := $(VENV)/bin/python
PIP := $(VENV)/bin/pip
PYTEST := $(VENV)/bin/pytest
UVICORN := $(VENV)/bin/uvicorn
SELF_TDD := $(VENV)/bin/self-tdd
# ── Setup ─────────────────────────────────────────────────────────────────────
install: $(VENV)/bin/activate
$(PIP) install --quiet -e ".[dev]"
@echo "✓ Ready. Run 'make dev' to start the dashboard."
install-bigbrain: $(VENV)/bin/activate
$(PIP) install --quiet -e ".[dev,bigbrain]"
@if [ "$$(uname -m)" = "arm64" ] && [ "$$(uname -s)" = "Darwin" ]; then \
$(PIP) install --quiet "airllm[mlx]"; \
echo "✓ AirLLM + MLX installed (Apple Silicon detected)"; \
else \
echo "✓ AirLLM installed (PyTorch backend)"; \
fi
$(VENV)/bin/activate:
python3 -m venv $(VENV)
# ── Development ───────────────────────────────────────────────────────────────
dev:
$(UVICORN) dashboard.app:app --reload --host 0.0.0.0 --port 8000
# Print the local IP addresses your phone can use to reach this machine.
# Connect your phone to the same hotspot your Mac is sharing from,
# then open http://<IP>:8000 in your phone browser.
# The server auto-reloads on Python/template changes (--reload above).
# For CSS/static changes, just pull-to-refresh on your phone.
ip:
@echo ""
@echo " Open one of these on your phone: http://<IP>:8000"
@echo ""
@ipconfig getifaddr en0 2>/dev/null | awk '{print " en0 (Wi-Fi): http://" $$1 ":8000"}' || true
@ipconfig getifaddr en1 2>/dev/null | awk '{print " en1 (Ethernet): http://" $$1 ":8000"}' || true
@ipconfig getifaddr en2 2>/dev/null | awk '{print " en2: http://" $$1 ":8000"}' || true
@ifconfig 2>/dev/null | awk '/inet / && !/127\.0\.0\.1/ && !/::1/{print " " $$2 " → http://" $$2 ":8000"}' | head -5 || true
@echo ""
watch:
$(SELF_TDD) watch --interval 60
# ── Testing ───────────────────────────────────────────────────────────────────
test:
$(PYTEST) tests/ -q --tb=short
test-cov:
$(PYTEST) tests/ --cov=src --cov-report=term-missing --cov-report=xml -q
# ── Code quality ──────────────────────────────────────────────────────────────
lint:
@$(PYTHON) -m ruff check src/ tests/ 2>/dev/null || \
$(PYTHON) -m flake8 src/ tests/ 2>/dev/null || \
echo "No linter installed — run: pip install ruff"
# ── Housekeeping ──────────────────────────────────────────────────────────────
clean:
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
find . -name "*.pyc" -delete 2>/dev/null || true
rm -rf .pytest_cache htmlcov .coverage coverage.xml
help:
@echo ""
@echo " make install create venv + install dev deps"
@echo " make install-bigbrain install with AirLLM (big-model backend)"
@echo " make dev start dashboard at http://localhost:8000"
@echo " make ip print local IP addresses for phone testing"
@echo " make test run all 228 tests"
@echo " make test-cov tests + coverage report"
@echo " make watch self-TDD watchdog (60s poll)"
@echo " make lint run ruff or flake8"
@echo " make clean remove build artefacts and caches"
@echo ""