1.10.0
Monorepo support
Path-scoped GitOps triggers, so a Module in a monorepo re-runs only when the code it actually depends on changes. Previously trigger_on_source_changed fired on every commit to the tracked branch, meaning any commit anywhere re-ran everything.
The trigger decision is content-based rather than history-based: on each refresh the Runner reads the git tree hash of every watched directory from a bare clone (no working tree is ever materialised), the server composes a per-Module fingerprint over that set, and the Module triggers when the fingerprint moves. Force-pushes, rebases and squashes are therefore non-events unless watched content genuinely changed.
trigger_path_filter_enabledon Module anddefault_trigger_path_filter_enabledon Namespace — opt-in, default off. Existing behaviour is unchanged unless enabled.- Additional Trigger Paths — new child resources on Module and Namespace for declaring extra watched directories, with full CRUD, dashboard panels and Terraform provider support. Namespace-level paths join every filter-enabled Module in that namespace.
- Automatic reference discovery — a new Go tool (
snapcd-inspect, embedded in the Runner and self-extracted at runtime) resolves the transitive closure of local Terraform module calls (source = "../shared/network") at the candidate commit. Exact by construction, since Terraform requires literal string sources..tf.jsonsupported; registry and git sources ignored. - Component version tags —
SemanticVersionRangeextended to monorepo-style tags:ui-v1.2.*,backend/v2.*,1.2.*-ui.