You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
0.2.0 — 2026-06-13
Upgrade notes for admins
Run migrations: docker compose run --rm web python tetherdust/web/manage.py migrate
No new env vars. AI-generation TTLs/timeouts now default to 1800s; override via TETHERDUST_FILTER_TTL, TETHERDUST_TOOL_CALLS_TTL, CODEX_HTTP_RESPONSE_TIMEOUT, or DIRECT_API_RESPONSE_TIMEOUT if needed.
Added
Tethers can now use a codebase documentation source as the code side, not just a live codebase repository. The Tether form has a single "Codebase or Codebase Documentation" dropdown that lists both, grouped by type, alongside the database doc-source.
Changed
Tether.codebase is now optional; a new Tether.codebase_doc_source field holds the doc-source alternative. The generation prompt and granted MCP sources adapt to whichever code source is selected.
Aligned all AI-generation TTLs/timeouts to 1800s (30 min) to match TETHER_GEN_TIMEOUT: MCP filter-token TTL and tool-call buffer TTL (were 600s), the MCP doc-resources cache (was 300s), and the Codex/direct-API HTTP response timeouts (were 300s).
.gitignore now excludes everything under documentations/except the bundled documentations/TetherDust Documentation/. Customer/environment-specific documentation folders are no longer tracked by git.
Fixed
Long-running tether/doc/chart generation no longer fails with Unknown or expired filter token. The MCP filter token (TTL 600s) and tool-call buffer (TTL 600s) could expire mid-run while the generation budget allowed up to 1800s, so the final save_tether_graph call hit a purged token and returned 403. All such limits now outlive the generation budget.
Source scoping: dashboard/chart generation, single-chart editing, and documentation generation now restrict the agent to exactly the sources selected in the form. Previously an empty selection for a dimension (e.g. picking a database but no documentation source) collapsed to "unrestricted" via selected_* or None, letting the agent search_docs/read documentation and codebases that were never granted — so a chart built against one database could surface table/column names from an entirely different one. Empty selections are now passed through as deny-all instead of unrestricted.