• erio's avatar
    fix(settings): inject channel_monitor & available_channels into SSR payload · 84b03efa
    erio authored
    Root cause: GetPublicSettingsForInjection used an inline struct that silently
    drifted from dto.PublicSettings and omitted channel_monitor_enabled /
    available_channels_enabled. On refresh window.__APP_CONFIG__ lacked these
    keys, so cachedPublicSettings.available_channels_enabled resolved to
    undefined and the opt-in sidebar entry (=== true) disappeared.
    
    Backend: extract PublicSettingsInjectionPayload as a named type with all
    feature-flag fields wired, and add a reflect-based drift test in the dto
    package so forgetting a future flag fails CI instead of the browser.
    
    Frontend: introduce utils/featureFlags.ts as the single registry for
    public-settings-driven toggles, with explicit opt-in / opt-out modes that
    encode the pre-load fallback. AppSidebar switches to makeSidebarFlag() so
    adding a new switch only touches the registry.
    84b03efa
AppSidebar.vue 36.3 KB