mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-10 18:56:53 +00:00
1f8ce773ff
* feat(ui): hide paid features from community-tier dashboard Community installs render only the features they can use. Tier-locked sections, lock badges, upsell cards, and "Upgrade" buttons no longer appear anywhere except the License page in Settings, which is the single discoverable upgrade path. Concretely: - PaidGate and AdmiralGate now render null for non-qualifying tiers instead of upsell cards. - SectionGate (settings) hides tier-locked sections entirely. - Settings sidebar and command palette filter out items the operator cannot reach. - Configuration Status widget on the dashboard drops the Automation section for community and hides any locked rows in remaining sections. - Fleet > Status node cards drop locked summary rows. - Stack action menu, sidebar bulk bar, file upload / download, scan comparison, network topology toggle, node label picker all hide for community instead of showing disabled affordances or "Upgrade" literal text. - Removes tierUpsell, TierLockChip, and useDismissalState (no longer referenced). Backend tier guards remain authoritative; this changes UI discovery only. * test(e2e): assert upload control is absent in community tier The community-clean-ui change removes the "Upgrade to unlock upload" pill from the file explorer. Update the matching e2e assertion to verify the upload control is not rendered, instead of waiting for a pill that no longer exists.
43 lines
1.9 KiB
TypeScript
43 lines
1.9 KiB
TypeScript
// Free-tier sections are exported eagerly: every operator sees them on every
|
|
// install so static imports keep first-paint fast.
|
|
export { AccountSection } from './AccountSection';
|
|
export { AppearanceSection } from './AppearanceSection';
|
|
export { LicenseSection } from './LicenseSection';
|
|
export { SystemSection } from './SystemSection';
|
|
export { NotificationsSection } from './NotificationsSection';
|
|
export { DeveloperSection } from './DeveloperSection';
|
|
export { AppStoreSection } from './AppStoreSection';
|
|
export { SupportSection } from './SupportSection';
|
|
export { AboutSection } from './AboutSection';
|
|
|
|
// Paid-tier sections (UsersSection, WebhooksSection, SecuritySection,
|
|
// LabelsSection, CloudBackupSection, NotificationRoutingSection) are NOT
|
|
// re-exported from this barrel. They are dynamically imported with
|
|
// React.lazy in SettingsPage.tsx so their JSX, copy, and prop shapes do not
|
|
// land in the bundle a Community user downloads. Re-adding any of them as a
|
|
// static export here would defeat the split: rollup detects the static path
|
|
// and keeps the module in the main chunk regardless of the lazy() call.
|
|
export { DEFAULT_SETTINGS } from './types';
|
|
export type { PatchableSettings, SectionId, Agent } from './types';
|
|
export {
|
|
SETTINGS_GROUPS,
|
|
SETTINGS_ITEMS,
|
|
getSettingsItem,
|
|
getSettingsGroup,
|
|
isItemVisible,
|
|
isItemLocked,
|
|
} from './registry';
|
|
export type {
|
|
SettingsGroupId,
|
|
SettingsGroupMeta,
|
|
SettingsItemMeta,
|
|
TierGate,
|
|
Scope,
|
|
VisibilityContext,
|
|
} from './registry';
|
|
export { SettingsSection } from './SettingsSection';
|
|
export { SettingsField, type SettingsFieldTone } from './SettingsField';
|
|
export { SettingsCallout, type SettingsCalloutTone } from './SettingsCallout';
|
|
export { SettingsActions, SettingsPrimaryButton, SettingsSecondaryButton } from './SettingsActions';
|
|
export { useMastheadStats } from './MastheadStatsContext';
|