Operator-side assistant feature-flag matrix, /insights tab-strip blocking root-cause fix on mobile, and the GHCR-propagation-race Coolify auto-deploy fix.
Added
- Assistant-surface operator toggles. Six boolean columns on
AppSettingscarve which model-driven surfaces stay visible without removing the provider configuration. Master plus five sub-flags cover Coach, Daily Briefing, per-metric status cards, correlations, and the Health-Score delta explainer. Defaults preserve the v1.4.30 behaviour. GET /api/feature-flags. Projects the matrix over HTTP for every client.Cache-Control: private, max-age=60.PUT /api/admin/settings/assistant-flags. Dedicated admin write surface with optimistic UI on the new/admin/assistantpanel.<AssistantDisabledNotice>component +useFeatureFlags()hook. Fails open — any error returns the all-on default so users never lose an affordance.
Fixed
- Insights tab-strip blocking on mobile. Three orthogonal client-side fixes that collapse the worst-case tap-block window from the LLM-completion tail to the bounded parallel-fetch window: 8 s
AbortControlleron the advisor fetch,React.memoon the strip withuseMemo'davailabilityprop, and anext/dynamiclazy-loaded Coach drawer.
Changed
- Server-side gating of every assistant endpoint. 403 +
meta.errorCode: \"assistant.disabled.<surface>\"envelope when the flag is off. Older clients see a generic 403; v1.4.31+ clients render the<AssistantDisabledNotice>empty state.
CI
- Coolify auto-deploy race fix.
Trigger Coolify deploystep sleeps 90 s before firing so GHCR's CDN edges have time to propagate the fresh:latestdigest. Full root-cause matrix in.planning/round-coolify-auto-deploy-fix-2026-05-16.md. - OpenAPI pre-commit hook. New
.githooks/pre-commitregenerates the spec on drift and re-stages the file. Activated viascripts/install-hooks.sh.
iOS contract
Every change is additive on the wire. The flag matrix gates BOTH server-routed AND on-device assistant surfaces — locked at .planning/v15-ios-handoff/08-locked-contracts.md §14.