Skip to content

feat: per-branding disabledFeatures#10968

Open
jcasimir wants to merge 1 commit into
hcengineering:developfrom
jcasimir:per-branding-disabled-features
Open

feat: per-branding disabledFeatures#10968
jcasimir wants to merge 1 commit into
hcengineering:developfrom
jcasimir:per-branding-disabled-features

Conversation

@jcasimir

@jcasimir jcasimir commented Jul 9, 2026

Copy link
Copy Markdown

What

Allows multi-host (branded) installations to disable features per branding entry, in addition to the installation-wide DISABLED_FEATURES env var.

A branding entry (the JSON served at BRANDING_URL, keyed by host) may now carry a disabledFeatures key using the same comma-separated format:

{
  "tracker.example-client.com": {
    "title": "Example Client Tracker",
    "disabledFeatures": "recruit,lead,inventory,training"
  }
}

At client bootstrap (web and desktop) the branding list is merged with DISABLED_FEATURES, feeding both presentation.metadata.DisabledFeatures and the model ExtraFilter — so the env var remains the installation-wide baseline and brandings can only extend it, never re-enable.

Why

Self-hosters serving multiple clients/brands from one installation (one workspace per client, one entry host per client) often want different feature surfaces per client — e.g. a lean tracker-only experience for one client while another uses recruiting. Today DISABLED_FEATURES is all-or-nothing per installation.

This reuses the existing branding mechanism (already per-host and already consulted at the same bootstrap points), so the change is small and purely additive: no schema, server, or behavior changes for installations that don't set the key.

Changes

  • dev/prod/src/platform.tsdisabledFeatures?: string on Branding; merge with config.DISABLED_FEATURES
  • desktop/src/ui/types.ts — same field on desktop Branding
  • desktop/src/ui/platform.ts — same merge
  • docs/disableFeatures.md — documentation

Testing

Verified on a self-hosted v0.7.426 installation serving two hosts (two brands, one deployment) with the web bundle built from this branch:

  • Both hosts load the identical patched bundle; per-host branding resolves by window.location.host as before (titles verified in the UI).
  • With "disabledFeatures": "calendar" on one host's branding entry only, CDP-captured bootstrap on that host logs loaded branding {key, title, disabledFeatures: "calendar"} while the other host's branding loads without the key — same bundle, host-differentiated feature list feeding the existing DisabledFeatures/ExtraFilter path.
  • Installations without the key see no change (field is optional; merge is a no-op on empty).

🤖 Generated with Claude Code

Allow multi-host installations to disable features per branding entry in
addition to the installation-wide DISABLED_FEATURES env. A branding entry
may carry disabledFeatures (same comma-separated format); the two lists
are merged at client bootstrap (web and desktop), so the env remains the
baseline and brandings can only extend it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@huly-github-staging

Copy link
Copy Markdown

Connected to Huly®: UBERF-16643

@jcasimir jcasimir marked this pull request as ready for review July 9, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant