Files
devplacepy/pyproject.toml
T
retoorandClaude Sonnet 5 82d6628af1 Fix low-contrast links, inline code, and warning badges on dark surfaces
Two independent contrast bugs, both from a token being used somewhere
it was never validated as a text color:

- Links/inline code used --accent as their text color against dark
  card surfaces, measuring 2.8-3.6:1 (below the 4.5:1 AA threshold for
  normal text) depending on the surface. Worst case: the sender's own
  DM chat bubble uses --accent as its *background*, so a link inside
  your own message was the exact same color as the bubble - 1.0:1,
  functionally invisible. Added --link/--link-hover (same hue/
  saturation as --accent, lightened until they clear 4.5:1 against the
  darkest realistic surface) and repointed the sitewide `a`/`a:hover`
  default, `.rendered-content a`/`code`, `.docs-chat-bubble a`, and
  `.ds-chat-citations a`. The DM chat bubble additionally needed
  bubble-scoped overrides (link, AI-adjusted note, attachment-pending
  placeholder, failed-send outline/retry-hint) since its background
  *is* --accent, which --link alone doesn't fix.
- `background: var(--warning); color: var(--white)` (chat's connection
  banner, a container badge, a service-status badge, and docs' PUT/4xx
  badges) measured ~1.7:1 - yellow needs dark text. Added --on-warning
  mirroring the existing --on-accent pattern and repointed just the
  warning-backed variants, leaving sibling info/success/danger badges
  untouched (they have the same underlying issue but are out of scope
  for this pass).

--accent itself is untouched, so every button/badge/nav element using
it as a solid fill is unchanged. Verified with computed WCAG contrast
ratios and Playwright screenshots against a live render of the real
CSS, plus the production homepage to confirm no regression to brand
colors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vnp7vzE4hvsytMo5YjszJm
2026-09-08 20:48:30 +02:00

62 lines
1.3 KiB
TOML

[project]
name = "devplacepy"
version = "1.0.10"
description = "DevPlace - The Developer Social Network"
requires-python = ">=3.12"
dependencies = [
"fastapi",
"uvicorn[standard]",
"jinja2",
"python-multipart",
"dataset",
"passlib[bcrypt]",
"python-dotenv",
"aiofiles",
"httpx[http2]",
"curl_cffi",
"brotli",
"zstandard",
"cryptography",
"PyJWT",
"multiavatar",
"locust",
"Pillow",
"imagehash",
"uuid_utils",
"mistune",
"emoji",
"pypdf",
"playwright",
"playwright-stealth",
"chromadb",
"weasyprint",
"cairosvg",
"sqlglot",
"curl_cffi",
"faker",
"defusedxml",
]
[project.scripts]
devplace = "devplacepy.cli:main"
devii = "devplacepy.services.devii.cli:main"
devplace-xmlrpc = "devplacepy.services.xmlrpc.server:main"
[project.optional-dependencies]
dev = ["pytest", "playwright", "requests", "coverage"]
bots = ["playwright", "faker"]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.pytest.ini_options]
testpaths = ["tests/unit", "tests/api", "tests/e2e"]
python_files = ["*.py"]
addopts = "--tb=line -rf -p no:xdist"
filterwarnings = [
"ignore:'crypt' is deprecated",
"ignore:Using `httpx` with `starlette.testclient` is deprecated",
"ignore:invalid escape sequence",
]