diff --git a/spec.yaml b/spec.yaml index c1d27ef..89ff51a 100644 --- a/spec.yaml +++ b/spec.yaml @@ -987,7 +987,9 @@ paths: stored plaintext (read-write); password fields are AES-256-GCM encrypted at rest, keyed by /maestro/secrets.key, and never returned again — the response is only a ServiceConfigEntry with set:true. - The value is injected as the field's env key on the next start. + The value is injected as the field's env key at start, and, when the + service is running and exposes POST /config (D6 write-back), delivered + to it at runtime over the mTLS peer edge. requestBody: required: true content: diff --git a/src/frontend/src/components/service/service-config.tsx b/src/frontend/src/components/service/service-config.tsx index e9271ad..883ad61 100644 --- a/src/frontend/src/components/service/service-config.tsx +++ b/src/frontend/src/components/service/service-config.tsx @@ -44,6 +44,11 @@ export function ServiceConfigDialog({ service, onClose }: ServiceConfigDialogPro const open = service !== null const { load, refresh } = useServiceConfig(service?.name ?? null, open) + const running = + (service?.status ?? '').toLowerCase() === 'running' || + (service?.status ?? '').toLowerCase() === 'starting' || + (service?.status ?? '').toLowerCase() === 'restarting' + return (

Operator-configured values declared by the service manifest. Passwords are stored - encrypted and are never shown again — only whether they are set. Applies on next - start. + encrypted and are never shown again — only whether they are set. + {running ? ' Values apply on the next restart.' : ' Values apply at next start.'}