ruff (#169)
* polish: streamline nav, extract inline styles, improve tablet UX
- Restructure desktop nav from 8+ flat links + overflow dropdown into
5 grouped dropdowns (Core, Agents, Intel, System, More) matching
the mobile menu structure to reduce decision fatigue
- Extract all inline styles from mission_control.html and base.html
notification elements into mission-control.css with semantic classes
- Replace JS-built innerHTML with secure DOM construction in
notification loader and chat history
- Add CONNECTING state to connection indicator (amber) instead of
showing OFFLINE before WebSocket connects
- Add tablet breakpoint (1024px) with larger touch targets for
Apple Pencil / stylus use and safe-area padding for iPad toolbar
- Add active-link highlighting in desktop dropdown menus
- Rename "Mission Control" page title to "System Overview" to
disambiguate from the chat home page
- Add "Home — Timmy Time" page title to index.html
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* fix(security): move auth-gate credentials to environment variables
Hardcoded username, password, and HMAC secret in auth-gate.py replaced
with os.environ lookups. Startup now refuses to run if any variable is
unset. Added AUTH_GATE_SECRET/USER/PASS to .env.example.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* refactor(tooling): migrate from black+isort+bandit to ruff
Replace three separate linting/formatting tools with a single ruff
invocation. Updates tox.ini (lint, format, pre-push, pre-commit envs),
.pre-commit-config.yaml, and CI workflow. Fixes all ruff errors
including unused imports, missing raise-from, and undefined names.
Ruff config maps existing bandit skips to equivalent S-rules.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-11 12:23:35 -04:00
|
|
|
.PHONY: bootstrap install install-bigbrain install-hooks dev nuke fresh test test-cov test-cov-html watch lint clean help \
|
2026-02-25 07:20:56 -05:00
|
|
|
up down logs \
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
docker-build docker-up docker-down docker-agent docker-logs docker-shell \
|
2026-02-28 16:11:58 -05:00
|
|
|
test-docker test-docker-cov test-docker-functional test-docker-build test-docker-down \
|
|
|
|
|
cloud-deploy cloud-up cloud-down cloud-logs cloud-status cloud-update \
|
|
|
|
|
logs-up logs-down logs-kibana
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
TOX := tox
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
|
|
|
|
# ── Setup ─────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
ruff (#169)
* polish: streamline nav, extract inline styles, improve tablet UX
- Restructure desktop nav from 8+ flat links + overflow dropdown into
5 grouped dropdowns (Core, Agents, Intel, System, More) matching
the mobile menu structure to reduce decision fatigue
- Extract all inline styles from mission_control.html and base.html
notification elements into mission-control.css with semantic classes
- Replace JS-built innerHTML with secure DOM construction in
notification loader and chat history
- Add CONNECTING state to connection indicator (amber) instead of
showing OFFLINE before WebSocket connects
- Add tablet breakpoint (1024px) with larger touch targets for
Apple Pencil / stylus use and safe-area padding for iPad toolbar
- Add active-link highlighting in desktop dropdown menus
- Rename "Mission Control" page title to "System Overview" to
disambiguate from the chat home page
- Add "Home — Timmy Time" page title to index.html
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* fix(security): move auth-gate credentials to environment variables
Hardcoded username, password, and HMAC secret in auth-gate.py replaced
with os.environ lookups. Startup now refuses to run if any variable is
unset. Added AUTH_GATE_SECRET/USER/PASS to .env.example.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* refactor(tooling): migrate from black+isort+bandit to ruff
Replace three separate linting/formatting tools with a single ruff
invocation. Updates tox.ini (lint, format, pre-push, pre-commit envs),
.pre-commit-config.yaml, and CI workflow. Fixes all ruff errors
including unused imports, missing raise-from, and undefined names.
Ruff config maps existing bandit skips to equivalent S-rules.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-11 12:23:35 -04:00
|
|
|
bootstrap:
|
|
|
|
|
@echo " Bootstrapping Timmy Time development environment..."
|
|
|
|
|
@python3 -c "import sys; exit(0 if sys.version_info >= (3,11) else 1)" \
|
|
|
|
|
|| { echo "ERROR: Python 3.11+ required (found $$(python3 --version))"; exit 1; }
|
|
|
|
|
poetry install --with dev
|
|
|
|
|
@[ -f .env ] || { cp .env.example .env; echo " Created .env from .env.example — edit as needed"; }
|
|
|
|
|
git config core.hooksPath .githooks
|
|
|
|
|
@command -v pre-commit >/dev/null 2>&1 && pre-commit install || true
|
|
|
|
|
@echo " Ready. Run 'make dev' to start the dashboard."
|
|
|
|
|
|
2026-02-28 13:12:14 -05:00
|
|
|
install:
|
|
|
|
|
poetry install --with dev
|
2026-03-09 15:01:00 -04:00
|
|
|
git config core.hooksPath .githooks
|
|
|
|
|
@echo "✓ Ready. Git hooks active. Run 'make dev' to start the dashboard."
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
2026-03-05 19:45:38 -05:00
|
|
|
install-hooks:
|
2026-03-09 15:01:00 -04:00
|
|
|
git config core.hooksPath .githooks
|
|
|
|
|
@echo "✓ Git hooks active via core.hooksPath (works in worktrees too)."
|
2026-03-05 19:45:38 -05:00
|
|
|
|
2026-02-28 13:12:14 -05:00
|
|
|
install-bigbrain:
|
|
|
|
|
poetry install --with dev --extras bigbrain
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@if [ "$$(uname -m)" = "arm64" ] && [ "$$(uname -s)" = "Darwin" ]; then \
|
2026-02-28 13:12:14 -05:00
|
|
|
poetry run pip install --quiet "airllm[mlx]"; \
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
echo "✓ AirLLM + MLX installed (Apple Silicon detected)"; \
|
|
|
|
|
else \
|
|
|
|
|
echo "✓ AirLLM installed (PyTorch backend)"; \
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# ── Development ───────────────────────────────────────────────────────────────
|
|
|
|
|
|
2026-02-25 11:01:11 -05:00
|
|
|
dev: nuke
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
PYTHONDONTWRITEBYTECODE=1 $(TOX) -e dev
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
2026-02-25 11:01:11 -05:00
|
|
|
# Kill anything on port 8000, stop Docker containers, clear stale state.
|
|
|
|
|
# Safe to run anytime — idempotent, never errors out.
|
|
|
|
|
nuke:
|
|
|
|
|
@echo " Cleaning up dev environment..."
|
|
|
|
|
@# Stop Docker containers (if any are running)
|
|
|
|
|
@docker compose down --remove-orphans 2>/dev/null || true
|
|
|
|
|
@# Kill any process holding port 8000 (errno 48 fix)
|
|
|
|
|
@lsof -ti :8000 | xargs kill -9 2>/dev/null || true
|
2026-02-25 17:18:44 -05:00
|
|
|
@# Purge stale bytecache to prevent loading old .pyc files
|
|
|
|
|
@find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
|
|
|
|
@find . -name "*.pyc" -delete 2>/dev/null || true
|
2026-02-25 11:01:11 -05:00
|
|
|
@# Brief pause to let the OS release the socket
|
|
|
|
|
@sleep 0.5
|
2026-02-25 17:18:44 -05:00
|
|
|
@echo " ✓ Port 8000 free, containers stopped, caches cleared"
|
2026-02-25 11:01:11 -05:00
|
|
|
|
2026-02-28 12:18:18 -05:00
|
|
|
# Full clean rebuild: wipe containers, images, volumes, rebuild from scratch.
|
|
|
|
|
# Ensures no stale code, cached layers, or old DB state persists.
|
|
|
|
|
fresh: nuke
|
|
|
|
|
docker compose down -v --rmi local 2>/dev/null || true
|
2026-02-28 13:12:14 -05:00
|
|
|
DOCKER_BUILDKIT=1 docker compose build --no-cache
|
2026-02-28 12:18:18 -05:00
|
|
|
mkdir -p data
|
|
|
|
|
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
|
|
|
|
|
@echo ""
|
|
|
|
|
@echo " ✓ Fresh rebuild complete — Timmy Time at http://localhost:8000"
|
|
|
|
|
@echo " Hot-reload active. Logs: make logs"
|
|
|
|
|
@echo ""
|
|
|
|
|
|
2026-02-22 15:19:51 +00:00
|
|
|
# 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 ""
|
2026-02-25 18:08:57 +00:00
|
|
|
@if [ "$$(uname -s)" = "Darwin" ]; then \
|
|
|
|
|
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; \
|
|
|
|
|
fi
|
|
|
|
|
@# Generic fallback — works on both macOS and Linux
|
|
|
|
|
@ifconfig 2>/dev/null | awk '/inet / && !/127\.0\.0\.1/ && !/::1/{print " " $$2 " → http://" $$2 ":8000"}' | head -5 \
|
|
|
|
|
|| ip -4 addr show 2>/dev/null | awk '/inet / && !/127\.0\.0\.1/{split($$2,a,"/"); print " " a[1] " → http://" a[1] ":8000"}' | head -5 \
|
|
|
|
|
|| true
|
2026-02-22 15:19:51 +00:00
|
|
|
@echo ""
|
|
|
|
|
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
watch:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
poetry run self-tdd watch --interval 60
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
# ── Testing (all via tox) ─────────────────────────────────────────────────────
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
|
|
|
|
test:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e all
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
test-unit:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e unit
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
test-integration:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e integration
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
test-functional:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e functional
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
test-e2e:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e e2e
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
test-fast:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e fast
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
test-ci:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e ci
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
test-cov:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e coverage
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
2026-02-22 20:42:58 -05:00
|
|
|
test-cov-html:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e coverage-html
|
2026-02-22 20:42:58 -05:00
|
|
|
@echo "✓ HTML coverage report: open htmlcov/index.html"
|
|
|
|
|
|
2026-02-25 02:44:36 +00:00
|
|
|
test-ollama:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e ollama
|
2026-02-25 02:44:36 +00:00
|
|
|
|
2026-02-28 16:11:58 -05:00
|
|
|
# ── Docker test containers ───────────────────────────────────────────────────
|
|
|
|
|
# Clean containers from cached images; source bind-mounted for fast iteration.
|
|
|
|
|
# Rebuild only needed when pyproject.toml / poetry.lock change.
|
|
|
|
|
|
|
|
|
|
# Build the test image (cached — fast unless deps change)
|
|
|
|
|
test-docker-build:
|
|
|
|
|
DOCKER_BUILDKIT=1 docker compose -f docker-compose.test.yml build
|
|
|
|
|
|
|
|
|
|
# Run all unit + integration tests in a clean container (default)
|
|
|
|
|
# Override: make test-docker ARGS="-k swarm -v"
|
|
|
|
|
test-docker: test-docker-build
|
|
|
|
|
docker compose -f docker-compose.test.yml run --rm test \
|
|
|
|
|
pytest tests/ -q --tb=short $(ARGS)
|
|
|
|
|
docker compose -f docker-compose.test.yml down -v
|
|
|
|
|
|
|
|
|
|
# Run tests with coverage inside a container
|
|
|
|
|
test-docker-cov: test-docker-build
|
|
|
|
|
docker compose -f docker-compose.test.yml run --rm test \
|
|
|
|
|
pytest tests/ --cov=src --cov-report=term-missing -q $(ARGS)
|
|
|
|
|
docker compose -f docker-compose.test.yml down -v
|
|
|
|
|
|
|
|
|
|
# Spin up the full stack (dashboard + optional Ollama) and run functional tests
|
|
|
|
|
test-docker-functional: test-docker-build
|
|
|
|
|
docker compose -f docker-compose.test.yml --profile functional up -d --wait
|
|
|
|
|
docker compose -f docker-compose.test.yml run --rm test \
|
|
|
|
|
pytest tests/functional/ -v --tb=short $(ARGS) || true
|
|
|
|
|
docker compose -f docker-compose.test.yml --profile functional down -v
|
|
|
|
|
|
|
|
|
|
# Tear down any leftover test containers and volumes
|
|
|
|
|
test-docker-down:
|
|
|
|
|
docker compose -f docker-compose.test.yml --profile functional --profile ollama --profile agents down -v
|
|
|
|
|
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
# ── Code quality ──────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
lint:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e lint
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
format:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e format
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
type-check:
|
Consolidate test & dev workflows into tox as single source of truth (#160)
* Centralize all Python environments on tox
tox.ini is now the single source of truth for how every Python
environment runs — tests, linting, formatting, dev server, and CI.
No more bare `poetry run` outside of tox.
- Expand tox.ini from 4 to 15 environments (lint, format, typecheck,
unit, integration, functional, e2e, fast, ollama, ci, coverage,
coverage-html, pre-commit, dev, all)
- Rewire all Makefile test/lint/format/dev targets to delegate to tox
- Update .githooks/pre-commit to run `tox -e pre-commit`
- Update .pre-commit-config.yaml to use tox instead of poetry run
- Update CI workflow (lint + test jobs) to use `tox -e lint` and
`tox -e ci` instead of ad-hoc pytest/black/isort invocations
- Update CLAUDE.md to mandate tox usage and document all environments
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* refactor: modernize tox.ini for tox 4.x conventions
- Replace `skipsdist = true` (tox 3 alias) with `no_package = true`
- Use `poetry install --no-root --sync` for faster, cleaner dep installs
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): drop poetry install from lint/format tox envs
Lint and format only need black, isort, and bandit — not the full
project dependency tree. Override commands_pre to empty and use tox
deps instead. Fixes CI failure where poetry is not on PATH.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry run wrapper from all tox commands
Since commands_pre runs poetry install into the tox-managed venv,
all tools (pytest, mypy, black, etc.) are already on the venv PATH.
The poetry run wrapper is redundant and fails in CI where poetry
may not be installed globally.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
* fix(ci): remove poetry dependency, align local and CI processes
- Replace `poetry install` with `pip install -e ".[dev]"` in tox
commands_pre so all envs work without poetry installed
- Remove Poetry cache from GitHub Actions (only pip cache needed)
- Rename pre-commit env to pre-push: runs lint + full CI suite
(same checks as GitHub Actions, reports generated locally)
- Update CLAUDE.md to reflect new pre-push workflow
The local `tox -e pre-push` now runs the exact same lint + test +
coverage checks as CI, so failures are caught before pushing.
https://claude.ai/code/session_01MTUpqms1fgezZFrodGA8H5
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 15:54:09 -04:00
|
|
|
$(TOX) -e typecheck
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
|
|
|
|
|
pre-commit-install:
|
|
|
|
|
pre-commit install
|
|
|
|
|
|
|
|
|
|
pre-commit-run:
|
|
|
|
|
pre-commit run --all-files
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
|
|
|
|
# ── Housekeeping ──────────────────────────────────────────────────────────────
|
|
|
|
|
|
2026-02-25 07:20:56 -05:00
|
|
|
# ── One-command startup ──────────────────────────────────────────────────────
|
|
|
|
|
# make up build + start everything in Docker
|
|
|
|
|
# make up DEV=1 same, with hot-reload on Python/template/CSS changes
|
|
|
|
|
|
|
|
|
|
up:
|
|
|
|
|
mkdir -p data
|
|
|
|
|
ifdef DEV
|
2026-02-28 13:12:14 -05:00
|
|
|
DOCKER_BUILDKIT=1 docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
|
2026-02-25 07:20:56 -05:00
|
|
|
@echo ""
|
|
|
|
|
@echo " ✓ Timmy Time running in DEV mode at http://localhost:8000"
|
|
|
|
|
@echo " Hot-reload active — Python, template, and CSS changes auto-apply"
|
|
|
|
|
@echo " Logs: make logs"
|
|
|
|
|
@echo ""
|
|
|
|
|
else
|
2026-02-28 13:12:14 -05:00
|
|
|
DOCKER_BUILDKIT=1 docker compose up -d --build
|
2026-02-25 07:20:56 -05:00
|
|
|
@echo ""
|
|
|
|
|
@echo " ✓ Timmy Time running at http://localhost:8000"
|
|
|
|
|
@echo " Logs: make logs"
|
|
|
|
|
@echo ""
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
down:
|
|
|
|
|
docker compose down
|
|
|
|
|
|
|
|
|
|
logs:
|
|
|
|
|
docker compose logs -f
|
|
|
|
|
|
2026-02-22 16:21:32 -05:00
|
|
|
# ── Docker ────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
docker-build:
|
2026-02-28 13:12:14 -05:00
|
|
|
DOCKER_BUILDKIT=1 docker build -t timmy-time:latest .
|
2026-02-22 16:21:32 -05:00
|
|
|
|
|
|
|
|
docker-up:
|
|
|
|
|
mkdir -p data
|
|
|
|
|
docker compose up -d dashboard
|
|
|
|
|
|
2026-03-08 12:50:44 -04:00
|
|
|
docker-prod:
|
|
|
|
|
mkdir -p data
|
|
|
|
|
DOCKER_BUILDKIT=1 docker build -t timmy-time:latest .
|
|
|
|
|
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d dashboard
|
|
|
|
|
|
2026-02-22 16:21:32 -05:00
|
|
|
docker-down:
|
|
|
|
|
docker compose down
|
|
|
|
|
|
|
|
|
|
# Spawn one agent worker connected to the running dashboard.
|
|
|
|
|
# Override name/capabilities: make docker-agent AGENT_NAME=Echo AGENT_CAPABILITIES=summarise
|
|
|
|
|
docker-agent:
|
|
|
|
|
AGENT_NAME=$${AGENT_NAME:-Worker} \
|
|
|
|
|
AGENT_CAPABILITIES=$${AGENT_CAPABILITIES:-general} \
|
|
|
|
|
docker compose --profile agents up -d --scale agent=1 agent
|
|
|
|
|
|
|
|
|
|
docker-logs:
|
|
|
|
|
docker compose logs -f
|
|
|
|
|
|
|
|
|
|
docker-shell:
|
|
|
|
|
docker compose exec dashboard bash
|
|
|
|
|
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
# ── Cloud Deploy ─────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
# One-click production deployment (run on your cloud server)
|
|
|
|
|
cloud-deploy:
|
|
|
|
|
@bash deploy/setup.sh
|
|
|
|
|
|
|
|
|
|
# Start the production stack (Caddy + Ollama + Dashboard + Timmy)
|
|
|
|
|
cloud-up:
|
|
|
|
|
docker compose -f docker-compose.prod.yml up -d
|
|
|
|
|
|
|
|
|
|
# Stop the production stack
|
|
|
|
|
cloud-down:
|
|
|
|
|
docker compose -f docker-compose.prod.yml down
|
|
|
|
|
|
|
|
|
|
# Tail production logs
|
|
|
|
|
cloud-logs:
|
|
|
|
|
docker compose -f docker-compose.prod.yml logs -f
|
|
|
|
|
|
|
|
|
|
# Show status of all production containers
|
|
|
|
|
cloud-status:
|
|
|
|
|
docker compose -f docker-compose.prod.yml ps
|
|
|
|
|
|
|
|
|
|
# Pull latest code and rebuild
|
|
|
|
|
cloud-update:
|
|
|
|
|
git pull
|
|
|
|
|
docker compose -f docker-compose.prod.yml up -d --build
|
|
|
|
|
|
|
|
|
|
# Create a DigitalOcean droplet (requires doctl CLI)
|
|
|
|
|
cloud-droplet:
|
|
|
|
|
@bash deploy/digitalocean/create-droplet.sh
|
|
|
|
|
|
|
|
|
|
# Scale agent workers in production: make cloud-scale N=4
|
|
|
|
|
cloud-scale:
|
|
|
|
|
docker compose -f docker-compose.prod.yml --profile agents up -d --scale agent=$${N:-2}
|
|
|
|
|
|
|
|
|
|
# Pull a model into Ollama: make cloud-pull-model MODEL=llama3.2
|
|
|
|
|
cloud-pull-model:
|
|
|
|
|
docker exec timmy-ollama ollama pull $${MODEL:-llama3.2}
|
|
|
|
|
|
2026-02-28 16:11:58 -05:00
|
|
|
# ── ELK Logging ──────────────────────────────────────────────────────────────
|
|
|
|
|
# Overlay on top of the production stack for centralised log aggregation.
|
|
|
|
|
# Kibana UI: http://localhost:5601
|
|
|
|
|
|
|
|
|
|
logs-up:
|
|
|
|
|
docker compose -f docker-compose.prod.yml -f docker-compose.logging.yml up -d
|
|
|
|
|
|
|
|
|
|
logs-down:
|
|
|
|
|
docker compose -f docker-compose.prod.yml -f docker-compose.logging.yml down
|
|
|
|
|
|
|
|
|
|
logs-kibana:
|
|
|
|
|
@echo "Opening Kibana at http://localhost:5601 ..."
|
|
|
|
|
@command -v open >/dev/null 2>&1 && open http://localhost:5601 || \
|
|
|
|
|
command -v xdg-open >/dev/null 2>&1 && xdg-open http://localhost:5601 || \
|
|
|
|
|
echo " → Open http://localhost:5601 in your browser"
|
|
|
|
|
|
2026-02-22 16:21:32 -05:00
|
|
|
# ── Housekeeping ──────────────────────────────────────────────────────────────
|
|
|
|
|
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
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:
|
2026-02-25 07:20:56 -05:00
|
|
|
@echo ""
|
|
|
|
|
@echo " Quick Start"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
|
|
|
|
@echo " make up build + start everything in Docker"
|
|
|
|
|
@echo " make up DEV=1 same, with hot-reload on file changes"
|
|
|
|
|
@echo " make down stop all containers"
|
|
|
|
|
@echo " make logs tail container logs"
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@echo ""
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
@echo " Local Development"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
ruff (#169)
* polish: streamline nav, extract inline styles, improve tablet UX
- Restructure desktop nav from 8+ flat links + overflow dropdown into
5 grouped dropdowns (Core, Agents, Intel, System, More) matching
the mobile menu structure to reduce decision fatigue
- Extract all inline styles from mission_control.html and base.html
notification elements into mission-control.css with semantic classes
- Replace JS-built innerHTML with secure DOM construction in
notification loader and chat history
- Add CONNECTING state to connection indicator (amber) instead of
showing OFFLINE before WebSocket connects
- Add tablet breakpoint (1024px) with larger touch targets for
Apple Pencil / stylus use and safe-area padding for iPad toolbar
- Add active-link highlighting in desktop dropdown menus
- Rename "Mission Control" page title to "System Overview" to
disambiguate from the chat home page
- Add "Home — Timmy Time" page title to index.html
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* fix(security): move auth-gate credentials to environment variables
Hardcoded username, password, and HMAC secret in auth-gate.py replaced
with os.environ lookups. Startup now refuses to run if any variable is
unset. Added AUTH_GATE_SECRET/USER/PASS to .env.example.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* refactor(tooling): migrate from black+isort+bandit to ruff
Replace three separate linting/formatting tools with a single ruff
invocation. Updates tox.ini (lint, format, pre-push, pre-commit envs),
.pre-commit-config.yaml, and CI workflow. Fixes all ruff errors
including unused imports, missing raise-from, and undefined names.
Ruff config maps existing bandit skips to equivalent S-rules.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-11 12:23:35 -04:00
|
|
|
@echo " make bootstrap one-command setup for new developers"
|
2026-02-28 13:12:14 -05:00
|
|
|
@echo " make install install deps via Poetry"
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@echo " make install-bigbrain install with AirLLM (big-model backend)"
|
2026-02-25 11:01:11 -05:00
|
|
|
@echo " make dev clean up + start dashboard (auto-fixes errno 48)"
|
|
|
|
|
@echo " make nuke kill port 8000, stop containers, reset state"
|
2026-02-28 12:18:18 -05:00
|
|
|
@echo " make fresh full clean rebuild (no cached layers/volumes)"
|
2026-02-22 15:19:51 +00:00
|
|
|
@echo " make ip print local IP addresses for phone testing"
|
2026-02-22 20:42:58 -05:00
|
|
|
@echo " make test run all tests"
|
|
|
|
|
@echo " make test-cov tests + coverage report (terminal + XML)"
|
|
|
|
|
@echo " make test-cov-html tests + HTML coverage report"
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@echo " make watch self-TDD watchdog (60s poll)"
|
ruff (#169)
* polish: streamline nav, extract inline styles, improve tablet UX
- Restructure desktop nav from 8+ flat links + overflow dropdown into
5 grouped dropdowns (Core, Agents, Intel, System, More) matching
the mobile menu structure to reduce decision fatigue
- Extract all inline styles from mission_control.html and base.html
notification elements into mission-control.css with semantic classes
- Replace JS-built innerHTML with secure DOM construction in
notification loader and chat history
- Add CONNECTING state to connection indicator (amber) instead of
showing OFFLINE before WebSocket connects
- Add tablet breakpoint (1024px) with larger touch targets for
Apple Pencil / stylus use and safe-area padding for iPad toolbar
- Add active-link highlighting in desktop dropdown menus
- Rename "Mission Control" page title to "System Overview" to
disambiguate from the chat home page
- Add "Home — Timmy Time" page title to index.html
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* fix(security): move auth-gate credentials to environment variables
Hardcoded username, password, and HMAC secret in auth-gate.py replaced
with os.environ lookups. Startup now refuses to run if any variable is
unset. Added AUTH_GATE_SECRET/USER/PASS to .env.example.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
* refactor(tooling): migrate from black+isort+bandit to ruff
Replace three separate linting/formatting tools with a single ruff
invocation. Updates tox.ini (lint, format, pre-push, pre-commit envs),
.pre-commit-config.yaml, and CI workflow. Fixes all ruff errors
including unused imports, missing raise-from, and undefined names.
Ruff config maps existing bandit skips to equivalent S-rules.
https://claude.ai/code/session_015uPUoKyYa8M2UAcyk5Gt6h
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-11 12:23:35 -04:00
|
|
|
@echo " make lint check formatting + imports + security (ruff)"
|
|
|
|
|
@echo " make format auto-format code (ruff)"
|
CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)
* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks
- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization
This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)
* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py
* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
2026-02-28 11:36:50 -05:00
|
|
|
@echo " make type-check run type checking (mypy)"
|
|
|
|
|
@echo " make pre-commit-run run all pre-commit checks"
|
|
|
|
|
@echo " make test-unit run unit tests only"
|
|
|
|
|
@echo " make test-integration run integration tests only"
|
|
|
|
|
@echo " make test-functional run functional tests only"
|
|
|
|
|
@echo " make test-e2e run E2E tests only"
|
|
|
|
|
@echo " make test-fast run fast tests (unit + integration)"
|
|
|
|
|
@echo " make test-ci run CI tests (exclude skip_ci)"
|
|
|
|
|
@echo " make pre-commit-install install pre-commit hooks"
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@echo " make clean remove build artefacts and caches"
|
|
|
|
|
@echo ""
|
2026-02-28 16:11:58 -05:00
|
|
|
@echo " Docker Testing (Clean Containers)"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
|
|
|
|
@echo " make test-docker run tests in clean container"
|
|
|
|
|
@echo " make test-docker ARGS=\"-k swarm\" filter tests in container"
|
|
|
|
|
@echo " make test-docker-cov tests + coverage in container"
|
|
|
|
|
@echo " make test-docker-functional full-stack functional tests"
|
|
|
|
|
@echo " make test-docker-build build test image (cached)"
|
|
|
|
|
@echo " make test-docker-down tear down test containers"
|
|
|
|
|
@echo ""
|
2026-02-25 07:20:56 -05:00
|
|
|
@echo " Docker (Advanced)"
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
@echo " ─────────────────────────────────────────────────"
|
2026-02-22 16:21:32 -05:00
|
|
|
@echo " make docker-build build the timmy-time:latest image"
|
|
|
|
|
@echo " make docker-up start dashboard container"
|
|
|
|
|
@echo " make docker-agent add one agent worker (AGENT_NAME=Echo)"
|
|
|
|
|
@echo " make docker-down stop all containers"
|
|
|
|
|
@echo " make docker-logs tail container logs"
|
|
|
|
|
@echo " make docker-shell open a bash shell in the dashboard container"
|
|
|
|
|
@echo ""
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
@echo " Cloud Deploy (Production)"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
|
|
|
|
@echo " make cloud-deploy one-click server setup (run as root)"
|
|
|
|
|
@echo " make cloud-up start production stack"
|
|
|
|
|
@echo " make cloud-down stop production stack"
|
|
|
|
|
@echo " make cloud-logs tail production logs"
|
|
|
|
|
@echo " make cloud-status show container status"
|
|
|
|
|
@echo " make cloud-update pull + rebuild from git"
|
|
|
|
|
@echo " make cloud-droplet create DigitalOcean droplet (needs doctl)"
|
|
|
|
|
@echo " make cloud-scale N=4 scale agent workers"
|
|
|
|
|
@echo " make cloud-pull-model MODEL=llama3.2 pull LLM model"
|
|
|
|
|
@echo ""
|
2026-02-28 16:11:58 -05:00
|
|
|
@echo " ELK Log Aggregation"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
|
|
|
|
@echo " make logs-up start prod + ELK stack"
|
|
|
|
|
@echo " make logs-down stop prod + ELK stack"
|
|
|
|
|
@echo " make logs-kibana open Kibana UI (http://localhost:5601)"
|
|
|
|
|
@echo ""
|