mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-11 19:26:56 +00:00
ce08a593d7
* refactor(settings): split System Limits and regroup the hub System Limits had grown into a grab-bag of host alert thresholds, Docker cleanup, and mesh data-plane controls under one mislabeled section. Split it into Host Alerts, Docker & Storage, and Fleet Mesh, and split Developer into Developer Diagnostics and Data Retention. Reorganize the sidebar into ten domain groups: Personal, Access, Infrastructure, Monitoring, Notifications, Automation, Organization, Security, Operations, Help. Each section now saves only its own keys, so a concurrent edit in one section no longer clobbers another. Data Retention sends the audit-log window only on a paid plan, matching the field's existing visibility, so a Community save no longer fails on a key the operator cannot set. NumberChip moves to a shared module and the toggle reuses the existing shared component. The /settings API is unchanged. * test(settings): cover registry structure and per-section save payloads Add structural invariants for the ten-group registry (every item maps to a real group, ids are unique, the System Limits and Developer splits land in the right groups with the right gates, renamed labels and the Registries paid gate hold) and per-section payload tests asserting each split section patches only its own keys, including the Community path where Data Retention omits the paid audit-log key. * docs(settings): document the regrouped settings hub Rewrite the settings reference for the ten-group layout, replace the System Limits page with Host Alerts, Docker & Storage, and Fleet Mesh, and document the prune-on-update, reclaimable-space banner, and mesh auto-recreate settings that were previously undocumented. Update the Settings navigation breadcrumbs across the feature docs and refresh the affected screenshots. * fix(settings): show Access sections as instance-global, not operator-scoped License, Users, SSO, and API Tokens are instance-global settings but the masthead scope label rendered them as operator-scoped because it keyed off the old Identity group. Only Personal sections (account, appearance) are operator/browser-scoped now; everything else reads as global. Also add a compile-time exhaustiveness guard to the section switch so a future SectionId added without a matching case fails the build instead of silently rendering a blank panel. * docs(settings): remap remaining settings breadcrumbs to the new groups Update the navigation breadcrumbs that still pointed at the removed Identity, Alerts, and Advanced groups: API Tokens and Users now sit under Access, Webhooks under Automation, Labels under Organization, App Store under Infrastructure, Appearance under Personal, and scan policies under Security > Vulnerability Scanning. Correct the settings reference scope note so Access reads as global. * docs(settings): remap renamed-section breadcrumbs across feature docs Sweep every feature, operations, getting-started, and reference page for navigation paths that still named the renamed settings sections, and point them at the current ones: Security becomes Security > Vulnerability Scanning, Notifications becomes Notifications > Channels, Routing becomes Notifications > Notification Routing, and Developer becomes Operations > Developer Diagnostics (with its retention windows under Operations > Data Retention). App Store moves under Infrastructure and the four-group overview in the getting-started intro is rewritten to the ten groups. Separators each page already used are preserved.
47 lines
2.1 KiB
TypeScript
47 lines
2.1 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 { HostAlertsSection } from './HostAlertsSection';
|
|
export { DockerStorageSection } from './DockerStorageSection';
|
|
export { FleetMeshSection } from './FleetMeshSection';
|
|
export { NotificationsSection } from './NotificationsSection';
|
|
export { DeveloperSection } from './DeveloperSection';
|
|
export { DataRetentionSection } from './DataRetentionSection';
|
|
export { AppStoreSection } from './AppStoreSection';
|
|
export { SupportSection } from './SupportSection';
|
|
export { AboutSection } from './AboutSection';
|
|
export { RecoverySection } from './RecoverySection';
|
|
|
|
// 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';
|