github MBombeck/HealthLog v1.4.31
v1.4.31 — Operator toggles + insights tab-strip + Coolify auto-deploy fix

2 hours ago

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 AppSettings carve 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/assistant panel.
  • <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 AbortController on the advisor fetch, React.memo on the strip with useMemo'd availability prop, and a next/dynamic lazy-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 deploy step sleeps 90 s before firing so GHCR's CDN edges have time to propagate the fresh :latest digest. Full root-cause matrix in .planning/round-coolify-auto-deploy-fix-2026-05-16.md.
  • OpenAPI pre-commit hook. New .githooks/pre-commit regenerates the spec on drift and re-stages the file. Activated via scripts/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.

Don't miss a new HealthLog release

NewReleases is sending notifications on new releases.