Serve the app tree, and fix the unguarded auto-enable

FeatureSecurityService
Shipped
August 24, 2026 at 10:55 PM UTC
Author
Kamo
Commit
e04180a

FeatureController now sends parent/children/isParent on every serialized app so the client can render children nested under their parent. Served rather than mirrored in TypeScript on purpose: the ServiceType mirrors have drifted from Java twice already and a second copy of the tree would be one more thing to drift. No new response shape was needed for the cascade — /enable and /disable already re-serialize the whole feature list, so knock-on changes arrive without the client reconciling anything. Both auto-provision loops now skip a child whose parent the platform does not offer, since enableFeature cascades the parent on and would otherwise switch on a parent nobody published. OrganizationController's loop had NO PHI check while FeatureController's equivalent did, on a public unauthenticated endpoint. For a PHI tenant the first blocked module threw, the surrounding catch logged a warning, and effectiveFeatures silently fell back to raw rows with no applied-model projection. It now asks rather than catches, exactly as the features listing does. /api/security/ehr registered. The commerce prefixes stay mapped to POS: the parent is the right coarse gate and **************** already refines per market. 938 tests green.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing