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

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

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

67 lines
1.5 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "clide-web"
version = "1.0.0"
description = "Web server for Clide TUI — replaces ttyd + zellij"
requires-python = ">=3.12"
license = "MIT"
authors = [
{ name = "Jeroen Schweitzer", email = "you@example.com" }
]
classifiers = [
"Development Status :: 3 - Alpha",
"Environment :: Web Environment",
"Framework :: FastAPI",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
dependencies = [
"clide",
"fastapi>=0.110",
"uvicorn[standard]>=0.29",
"pydantic-settings>=2.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0.0",
"pytest-asyncio>=0.23.0",
"httpx>=0.27.0",
"ruff>=0.3.0",
"mypy>=1.8.0",
]
[project.scripts]
clide-web = "clide_web.__main__:main"
clide-web-setup = "clide_web.setup_wizard:run_setup"
[tool.hatch.build.targets.wheel]
packages = ["clide_web"]
[tool.ruff]
target-version = "py312"
line-length = 100
src = ["clide_web"]
[tool.ruff.lint]
select = [
"E", "W", "F", "I", "B", "C4", "UP", "ARG", "SIM", "TCH", "PTH", "ASYNC",
]
ignore = [
"E501", "ARG002", "SIM102", "SIM105", "SIM115", "PTH123", "TCH002", "TCH003",
]
[tool.ruff.lint.isort]
known-first-party = ["clide_web"]
[tool.mypy]
python_version = "3.12"
strict = true
warn_return_any = true
warn_unused_configs = true