{"record":{"id":"bd33cd11b35eb767","repo":"BigPizzaV3/CodexPlusPlus","slug":"codex-enhancements-are-disabled","errorCode":null,"errorMessage":"Codex enhancements are disabled","messagePattern":"Codex enhancements are disabled","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"warning","filePath":"apps/codex-plus-manager/src-tauri/src/lib.rs","lineNumber":400,"sourceCode":"            None::<&str>,\n        );\n        let quit_item = MenuItem::with_id(&app, TRAY_MENU_QUIT, &quit_label, true, None::<&str>);\n        if let (Ok(show), Ok(apply_skin), Ok(quit)) = (show_item, apply_skin_item, quit_item) {\n            if let Ok(menu) = Menu::with_items(&app, &[&show, &apply_skin, &quit]) {\n                let _ = tray.set_menu(Some(menu));\n            }\n        }\n    }\n    if let Some(window) = app.get_webview_window(\"main\") {\n        let _ = window.set_title(&window_title);\n    }\n}\n\nasync fn apply_dream_skin_from_tray() -> anyhow::Result<()> {\n    let store = codex_plus_core::settings::SettingsStore::default();\n    let current = store.load()?;\n    if !current.enhancements_enabled {\n        anyhow::bail!(\"Codex enhancements are disabled\");\n    }\n    let settings = store.update(serde_json::json!({\n        \"codexAppDreamSkinEnabled\": true,\n        \"codexAppDreamSkinPaused\": false\n    }))?;\n    debug_assert!(settings.enhancements_enabled);\n    codex_plus_core::dream_skin::sync_default_dream_skin_base_theme(\n        true,\n        &settings.codex_app_dream_skin_theme_config,\n    )?;\n    codex_plus_core::dream_skin_runtime::apply_dream_skin_live(\n        DREAM_SKIN_DEBUG_PORT,\n        codex_plus_core::protocol_proxy::protocol_proxy_port(),\n    )\n    .await?;\n    Ok(())\n}\n","sourceCodeStart":382,"sourceCodeEnd":418,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/b1ed92e5e4a2d74095d4b8db5af43cef7acba9c6/apps/codex-plus-manager/src-tauri/src/lib.rs#L382-L418","documentation":"The tray menu action \"apply Dream Skin\" first loads settings and refuses to proceed when the global enhancements_enabled master switch is off. This guard ensures Dream Skin cannot be toggled on while all Codex++ enhancements are disabled.","triggerScenarios":"Choosing the Dream Skin apply item from the tray menu (apply_dream_skin_from_tray, lib.rs ~400, invoked from install_tray) while current.enhancements_enabled == false.","commonSituations":"User disabled all enhancements in settings but still clicks the tray Dream Skin option; settings file reset to defaults with enhancements_enabled=false; another feature toggled the master switch off programmatically.","solutions":["Enable the master 'enhancements' switch in manager settings, then retry the tray action","Set enhancementsEnabled=true via the settings UI before applying Dream Skin","If settings were reset unintentionally, restore them or flip the switch back on"],"exampleFix":"// before\ntrayApplyDreamSkin();\n// after\nif (!settings.enhancementsEnabled) { await settings.update({ enhancements_enabled: true }); }\ntrayApplyDreamSkin();","handlingStrategy":"validation","validationCode":"const settings = await loadSettings(); if (!settings.enhancementsEnabled) return; // skip tray action","typeGuard":null,"tryCatchPattern":"try { await trayApplyDreamSkin() } catch (e) { if (String(e).includes('enhancements are disabled')) openEnhancementsSettings(); }","preventionTips":["Disable the tray Dream Skin item when the master switch is off","Sync tray menu state with settings changes","Show the switch state in the tray tooltip"],"tags":["tray","feature-flag","dream-skin"],"backgroundTag":"feature-not-enabled","analyzedSha":"b1ed92e5e4a2d74095d4b8db5af43cef7acba9c6","analyzedAt":"2026-09-19T23:35:21.129Z","contentChangedAt":"2026-09-19T23:35:21.129Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}