Files
tavolo/server/packages/tavolo-app
woggioni 5eccaafadc Upgrade kaya to 0.0.6
kaya-oidc 0.0.6 namespaces its session state per provider as
oidc:{provider}:user (the default provider is "default", so the key is
oidc:default:user). The unprefixed oidc_user key is no longer written:
left unadapted, every websocket upgrade would be rejected with 401 and
traced requests would silently lose their user.id attribute. Adopt it
with a session_user helper on tavolo.platform.auth that finds any
provider's user, used by both get_ws_user and telemetry's
session_tag_hook. Websocket and route handlers keep their signatures.

kaya-otel 0.0.6 only enriches websocket spans with standard URL, network
and peer attributes (plus error.type), which needs no application change.

Regenerate the lock: the eight kaya pins move to 0.0.6 and, the wheels'
declared metadata being unchanged, nothing else moves. tavolo-platform
now floors kaya-core>=0.0.6 (it reads the new session layout) and
tavolo-app floors kaya-otel>=0.0.6.

As kaya documents, the session-key move signs existing logged-in users
out once; they simply log in again.
2026-10-01 20:38:21 +08:00
..
2026-10-01 20:38:21 +08:00
2026-10-01 20:38:21 +08:00

tavolo-app

The deployable tavolo application: the composition root wiring tavolo-platform to the tavolo-scopone game.

Contents

  • app.py — assembles the KayaApp (session/OIDC/Tortoise/OpenAPI mixins plus PlatformMixin and the deadline scheduler), registers the ScoponeEngine with its configured timeouts, and exposes tavolo.app:app for granian.
  • config.py — environment-driven frozen Settings.
  • telemetry.py — the optional OpenTelemetry wiring beyond kaya-otel: meter/tracer/logger providers, the tavolo.active_users/tavolo.ongoing_games gauges (polled from the stores), process/CPython metrics via opentelemetry-instrumentation-system-metrics, Postgres/Redis query spans via the asyncpg/redis instrumentations, and OTLP log export.
  • aerich_config.py — Tortoise ORM configuration consumed by the aerich CLI (migrations live in server/migrations/; aerich itself is configured via the [tool.aerich] section of server/pyproject.toml).
  • logging_config.py — logging setup.
  • static.py — SPA shell hosting for the compiled frontend.

Development (from packages/tavolo-app/)

.venv/bin/python -m mypy --namespace-packages --explicit-package-bases \
  src/tavolo/app.py \
  src/tavolo/config.py \
  src/tavolo/telemetry.py \
  src/tavolo/static.py \
  src/tavolo/aerich_config.py \
  src/tavolo/logging_config.py

End-to-end coverage of the wired stack lives in server/tests/.