cabe0b6049
- Add API test layer (TestClient): bad prefs -> 200, mute affects feed, avoid-term filters, brief filters down, counts match filtered feed. - Render article cards via the DOM API (textContent) instead of HTML string interpolation, and only allow http(s) hrefs — defense-in-depth XSS guard for when the feed faces untrusted sources publicly. - Refresh the stale README Next Steps to reflect what's done vs ahead. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
33 lines
714 B
TOML
33 lines
714 B
TOML
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "goodnews"
|
|
version = "0.1.0"
|
|
description = "Local-first constructive news ingestion and filtering prototype."
|
|
requires-python = ">=3.11"
|
|
# The ingestion CLI is intentionally pure-stdlib. The optional `web` extra adds
|
|
# the API/site layer so the two halves can be deployed and upgraded independently.
|
|
dependencies = []
|
|
|
|
[project.optional-dependencies]
|
|
web = [
|
|
"fastapi>=0.110",
|
|
"uvicorn[standard]>=0.29",
|
|
]
|
|
test = [
|
|
"pytest>=8",
|
|
"httpx>=0.27",
|
|
]
|
|
|
|
[project.scripts]
|
|
goodnews = "goodnews.cli:main"
|
|
|
|
[tool.setuptools]
|
|
packages = ["goodnews"]
|
|
|
|
[tool.setuptools.package-data]
|
|
goodnews = ["static/*"]
|
|
|