First release in the v0.29.x series — adds two user-visible features (private module input/output discovery and VCS-connected policy sets) and the long-awaited list-flicker fix.
Highlights
- Module registry: inputs & outputs surfaced from the tarball — when a module version is published, Terrapod now parses its root
.tffiles and stores the parsedvariableandoutputblocks (type, description, default, required/sensitive, plus a JSON-Schema-shapedtype_schema) so the UI can render the module's interface without a Terraform CLI round-trip. Endpoint:GET /api/terrapod/v1/registry-modules/private/default/{name}/{provider}/{version}/interface. Off-switchable viaapi.config.registry.module_interface.enabled. - VCS-connected policy sets — policy sets can now point at a Git repo + path instead of being uploaded inline. A new periodic poller and on-demand
POST /policy-sets/{id}/actions/syncpull.regofiles filtered topackage terrapod+denyrules, with per-set commit-SHA tracking and visible last-error reporting. New attributes (source,vcs-*,vcs-last-*) live onpolicy-sets; a CHECK constraint enforcessource IN ('inline', 'vcs').
Bug Fixes
- UI list flicker on SSE/poll refetch — every list page (workspace runs, workspace list, agent pool detail, all admin and registry pages) replaced the visible list with a spinner during background refetches. Removed the
setLoading(true)toggle from the load functions; spinner now shows only on first mount, refetches keep the existing rows visible and reconcile cell-by-cell. - Status pill labels no longer wrap to two lines when the workspace list is narrow.
- Runner: retry transient downloads in
tp_curl_downloadso a flaky network on artifact / binary fetch no longer fails a run that would otherwise succeed on the second attempt.
Status
Beta — public surface is stable but expect movement on the new VCS policy-set attribute set as we discover edge cases against larger .rego corpora.
Full Changelog: v0.28.5...v0.29.0