| 1 | # Пример пользовательского settings.toml (ADR 0028: %LocalAppData%\CascadeIDE\settings.toml). |
| 2 | # Ключи — snake_case (CascadeTomlSerializer / Tomlyn). Секции — вложенные таблицы. |
| 3 | # Заводские дефолты: Settings/defaults-settings.toml (embedded; merge поверх user-файла). |
| 4 | # Соглашение как в defaults: явные URL/пути; пустая строка только с комментарием (PATH, выключено, позже). |
| 5 | # Env: <field>_env (ADR 0149): executable_env = "PATH" или имя переменной с путём/URL. |
| 6 | |
| 7 | # Строка топологии и грамматика якорей (ADR 0017 § display.screens). |
| 8 | # Tier compact/cockpit — ADR 0171: на 1–2 мониторах обычно compact; cockpit — 3 mon / ultrawide. |
| 9 | [display.screens] |
| 10 | topology = "(F)" |
| 11 | |
| 12 | [display.presentation] |
| 13 | tier = "auto" |
| 14 | compact_intercom_placement = "side" |
| 15 | compact_auxiliary_panel_width_px = 380 |
| 16 | compact_intercom_bottom_dock_height_px = 280 |
| 17 | compact_mfd_bottom_dock_height_px = 220 |
| 18 | |
| 19 | [display.screens.grammar] |
| 20 | brackets = "()" |
| 21 | between_screens = " " |
| 22 | between_zones = "+" |
| 23 | pfd = "P" |
| 24 | forward = "F" |
| 25 | mfd = "M" |
| 26 | |
| 27 | [display] |
| 28 | maximize_hosts_on_dedicated_screens = true |
| 29 | prefer_repo_instruments = false |
| 30 | |
| 31 | [display.pfd] |
| 32 | open_on_startup = false |
| 33 | |
| 34 | [display.mfd] |
| 35 | open_on_startup = false |
| 36 | |
| 37 | [display.skia] |
| 38 | zone_geometry_overlay = false |
| 39 | instrument_mount = false |
| 40 | |
| 41 | [display.mount] |
| 42 | default_style = "instrument_mount_v1" |
| 43 | enforce_eligibility = false |
| 44 | min_sa = 0.6 |
| 45 | min_performance = 0.6 |
| 46 | max_workload = 0.5 |
| 47 | require_scores = false |
| 48 | |
| 49 | [[display.mount.rules]] |
| 50 | surface = "main_window_docked_grid" |
| 51 | slot = "pfd" |
| 52 | instrument = "ide_health_status_v1" |
| 53 | style = "instrument_mount_v1" |
| 54 | sa_score = 0.8 |
| 55 | performance_score = 0.8 |
| 56 | workload_score = 0.2 |
| 57 | |
| 58 | [[display.mount.rules]] |
| 59 | surface = "main_window_plus_mfd_host_top_level" |
| 60 | slot = "mfd" |
| 61 | instrument = "ide_health_status_v1" |
| 62 | style = "instrument_mount_v1" |
| 63 | sa_score = 0.75 |
| 64 | performance_score = 0.72 |
| 65 | workload_score = 0.28 |
| 66 | |
| 67 | # Основные слоты PFD/MFD (ADR 0050): alias или канонический instrument_id. |
| 68 | [display.instruments] |
| 69 | pfd_primary = "workspace_map" |
| 70 | # Полоса warm-up/HCI (instrument workspace_background_status_v1): background_status | none |
| 71 | pfd_status_strip = "background_status" |
| 72 | forward_status_strip = "background_status" |
| 73 | |
| 74 | [ai] |
| 75 | mode = "local" |
| 76 | |
| 77 | [ai.local] |
| 78 | backend = "ollama" |
| 79 | |
| 80 | [ai.local.ollama] |
| 81 | model = "qwen2.5-coder:7b" |
| 82 | |
| 83 | [ai.acp] |
| 84 | cursor_acp_path = "" |
| 85 | # Пусто = искать cursor-agent в PATH. |
| 86 | cursor_acp_model_id = "" |
| 87 | |
| 88 | [ai.mcp_only] |
| 89 | |
| 90 | [ai.cloud] |
| 91 | active_provider = "anthropic" |
| 92 | |
| 93 | [ai.cloud.anthropic] |
| 94 | model = "claude-sonnet-4-20250514" |
| 95 | |
| 96 | [ai.cloud.openai] |
| 97 | base_url = "https://api.openai.com" |
| 98 | model = "gpt-4o" |
| 99 | |
| 100 | [ai.cloud.deepseek] |
| 101 | base_url = "https://api.deepseek.com" |
| 102 | model = "deepseek-chat" |
| 103 | |
| 104 | [ai.chat] |
| 105 | settings_presentation = "mfd" |
| 106 | show_thinking_in_history = true |
| 107 | |
| 108 | [mcp] |
| 109 | acp_auto_inject_ide_mcp = true |
| 110 | external_servers_json = "[]" |
| 111 | external_servers_json_path = "" |
| 112 | |
| 113 | [hybrid_index] |
| 114 | # In-proc integration settings for Hybrid Codebase Index (ADR 0106). |
| 115 | # Core HCI settings live in workspace folder under `index_dir` (same as external MCP). |
| 116 | enabled = true |
| 117 | index_dir = ".hybrid-codebase-index" |
| 118 | debounce_ms = 750 |
| 119 | auto_reindex_on_solution_open = true |
| 120 | watch_files = true |
| 121 | scope_mode = "workspace+solution" # or "workspace" |
| 122 | pause_when_mcp_stdio_host = false |
| 123 | |
| 124 | # Palette go-to workspace search (ADR 0112): t:/m:/x:. hci/auto fall back to ripgrep until HCI path lands. |
| 125 | [command_palette.go_to_search] |
| 126 | backend = "rg" |
| 127 | |
| 128 | [workspace] |
| 129 | pfd_expanded = true |
| 130 | show_terminal = true |
| 131 | show_git = false |
| 132 | show_instrumentation = true |
| 133 | mode = "Flight" |
| 134 | culture = "" |
| 135 | splitters_locked = false |
| 136 | # ADR 0120: "editor" (дефолт) | "intercom" — Intercom в Forward, редактор на MFD |
| 137 | primary_work_surface = "intercom" |
| 138 | |
| 139 | [code_navigation_map] |
| 140 | view = "list" |
| 141 | depth = "file" |
| 142 | related_graph_layout = "auto" |
| 143 | # auto | vertical | horizontal — главная ось control-flow мини-карты |
| 144 | control_flow_main_axis = "auto" |
| 145 | # intent | detailed (ADR 0151) |
| 146 | control_flow_grain = "intent" |
| 147 | # id пресета: бандл → .cascade/workspace.toml → settings ([[code_navigation_map.condition_branch.presets]]) |
| 148 | condition_branch_label_preset = "plus_minus" |
| 149 | # [[code_navigation_map.condition_branch.presets]] |
| 150 | # id = "my_labels" |
| 151 | # positive = "Y" |
| 152 | # negative = "N" |
| 153 | |
| 154 | # ------------------------------------------------------------ |
| 155 | # workspace.adr.map — doc correspondence (ADR 0061) |
| 156 | # ------------------------------------------------------------ |
| 157 | # |
| 158 | # Это пример секции для .cascade/workspace.toml (в корне репозитория), не для settings.toml. |
| 159 | # |
| 160 | # Секция задаёт декларативную карту «префикс пути (от корня репо) → ADR-док(и)». |
| 161 | # Алгоритм: longest prefix wins, затем fallback "*". |
| 162 | # |
| 163 | # [workspace.adr.map] |
| 164 | # "Features/UiChrome/" = [ |
| 165 | # "docs/adr/0010-ui-mode-catalog.md", |
| 166 | # "docs/adr/0021-pfd-mfd-cockpit-attention-model.md", |
| 167 | # ] |
| 168 | # "*" = "docs/adr/0006-presentation-layers-and-feature-slices.md" |
| 169 | # |
| 170 | # [workspace.adr] |
| 171 | # # none | linked — auto include ADRs linked from выбранного ADR markdown (1 hop) |
| 172 | # auto_include = "linked" |
| 173 | # # max linked ADRs to add (per click/preview) |
| 174 | # max_related = 8 |
| 175 | # |
| 176 | # [workspace.features] |
| 177 | # [[workspace.features.feature]] |
| 178 | # id = "intercom.chat" |
| 179 | # title = "Intercom Chat" |
| 180 | # paths = ["Features/Chat/", "Intercom/"] |
| 181 | # docs = ["docs/adr/0137-intercom-message-code-correspondence.md", "docs/adr/0144-intercom-oauth-connect.md"] |
| 182 | # tags = ["intercom", "chat"] |
| 183 | |
| 184 | [languages.csharp] |
| 185 | mode = "OmniSharp" |
| 186 | |
| 187 | [languages.csharp.omni_sharp] |
| 188 | executable = "" |
| 189 | arguments = "" |
| 190 | |
| 191 | [languages.markdown] |
| 192 | mode = "Marksman" |
| 193 | |
| 194 | [languages.markdown.marksman] |
| 195 | executable = "" |
| 196 | arguments = "" |
| 197 | |
| 198 | [markdown.diagrams] |
| 199 | kroki = true |
| 200 | kroki_url = "https://kroki.io" |
| 201 | |
| 202 | [code_navigation] |
| 203 | # Пресеты: бандл CodeNavigation/presets.toml + .cascade/workspace.toml + этот файл ([[code_navigation.presets]]). |
| 204 | # Подписи ветвей IF (control-flow): condition-branch-label-presets.toml + workspace + settings |
| 205 | # [[code_navigation_map.condition_branch.presets]] в .cascade/workspace.toml — team overlay. |
| 206 | # [[code_navigation.presets]] |
| 207 | # id = "my_preset" |
| 208 | # exclude_kinds = ["same_namespace"] |
| 209 | |
| 210 | # Типографика (Skia Intercom, AvaloniaEdit). Заводские значения — Settings/defaults-settings.toml. |
| 211 | [fonts.intercom] |
| 212 | prose_pt = 14 |
| 213 | # Отдельный размер только для лобового Forward (intercom); MFD Chat — prose_pt. Не про ширину split-колонки. |
| 214 | prose_pt_forward = 14 |
| 215 | # Composer: ввод и placeholder внизу; 0 = ~prose×12/11 |
| 216 | # composer_pt = 15 |
| 217 | # chrome_title_pt = 14 |
| 218 | # chrome_subtitle_pt = 11 |
| 219 | # chrome_heading_pt = 15 |
| 220 | # card_title_pt = 15 |
| 221 | # panel_title_pt = 16 |
| 222 | # panel_subtitle_pt = 12 |
| 223 | # panel_label_pt = 13 |
| 224 | # panel_input_pt = 15 |
| 225 | # panel_body_pt = 16 |
| 226 | prose_family = "Segoe UI" |
| 227 | mono_family = "Cascadia Mono,Consolas" |
| 228 | chip_family = "Segoe UI" |
| 229 | chip_id_family = "Consolas" |
| 230 | slash_meta_family = "Consolas" |
| 231 | slash_args_family = "Consolas" |
| 232 | role_family = "Segoe UI" |
| 233 | gutter_family = "Cascadia Mono,Consolas" |
| 234 | |
| 235 | [fonts.editor] |
| 236 | size_pt = 14 |
| 237 | family = "Consolas,Cascadia Code,monospace" |
| 238 | |
| 239 | [editor.inline_hints] |
| 240 | # Editor inlay-hints toggles. |
| 241 | enabled = true |
| 242 | parameter_names = true |
| 243 | variable_types = true |
| 244 | |
| 245 | [editor.debug_hints] |
| 246 | enabled = true |
| 247 | show_assignments = true |
| 248 | show_conditions = true |
| 249 | |
| 250 | # Intercom: плотность ленты — comfortable | compact (см. также [fonts.intercom] prose_pt / prose_pt_forward) |
| 251 | [intercom] |
| 252 | feed_metrics = "comfortable" |
| 253 | |
| 254 | # Intercom: code-attach (chip F:/M:/L:) — ADR 0130 |
| 255 | # navigate: reveal | select; reveal_load_solution: when_needed | never |
| 256 | [intercom.attachments.code] |
| 257 | navigate = "reveal" |
| 258 | reveal_load_solution = "when_needed" |
| 259 | |
| 260 | # Диагностика отправки Intercom → {workspace}/.cascade-ide/intercom-send-trace.log |
| 261 | [logging.intercom] |
| 262 | send_trace = false |
| 263 | |