Commit 91b2c4e
authored
feat(cli): let the terminal resolve a conflict too (#3088)
* feat(cli): let the terminal resolve a conflict too
PR #3084 gave the dashboard a way past a conflicted client config. The CLI got
nothing, so `ocx integration client enable` still dead-ends on exactly the state
the overwrite path exists to escape -- and it strands the user who has no browser:
an SSH session, or an agent driving the proxy.
Adds `--overwrite-conflict`, spelled the way `restore --confirm-drift` already is.
Never assumed: without the flag a conflict is still refused, and the field is
omitted from the request entirely rather than sent as false, so a proxy on an older
build sees the request it has always seen.
`--overwrite-conflict` with `disable` fails locally instead of being forwarded. The
route answers 400 for that pair, but a usage error names the flag that is wrong
where the route reply arrives as a generic failed request. Forcing a disable over a
conflict deletes a block we never wrote, which is the one thing the refusal exists
to prevent.
Docs said the switch "locks and disable refuses rather than guessing", which is now
only half true. The English guide describes Replace and the new flag, and the three
translated copies of that page get the flag block so they do not contradict the
source.
Verification: 41 pass in tests/cli-headless-parity.test.ts, driven red twice --
dropping the flag from the request body, and neutering the disable guard. tsc clean,
privacy:scan clean, skill:surface:check current, test:changed 86 pass.
* test(gui): pin the two things that keep the overwrite dialog readable on a phone
The conflict dialog was verified at desktop width only. Measured at 390px in both
themes it is fine -- 370px wide at left:10, no horizontal overflow anywhere on the
page, the Replace button not clipped, and the config path inside its container --
but two of those depended on details nothing was checking.
The dialog is 370px wide and a config path is one long unbroken token, so the path
needs an in-word break opportunity or it overflows and the single fact the user
needs (which file is about to change) goes off screen. Two things have to hold: the
path renders inside a <code> element, and that element is allowed to break.
Guard one asserts the path is in a <code> with a long realistic path. Guard two
asserts the stylesheet rule, because a CSS declaration has no type or render
coverage in a DOM-less suite.
Verification: 41 pass across the two files. Both driven red -- rendering the path
as bare text, and dropping overflow-wrap from the dialog rule. The first attempt at
the CSS falsification was itself wrong: it replaced the FIRST overflow-wrap in the
file, which belongs to .integration-path, and the guard stayed green. Re-run against
the whole declaration it goes red, which is the only version worth keeping.
* test(gui): use a synthetic home in the dialog path fixture
privacy:scan rejects a committed /Users/<name>/ path, and the fixture I added
carried a real one. The scan ran clean before that test existed, which is how it
reached CI.1 parent b4303bb commit 91b2c4e
8 files changed
Lines changed: 153 additions & 2 deletions
File tree
- docs-site/src/content/docs
- fr/guides
- guides
- tr/guides
- zh-tw/guides
- gui/tests
- src/cli
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
148 | 158 | | |
149 | 159 | | |
150 | 160 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
127 | 135 | | |
128 | 136 | | |
129 | 137 | | |
| |||
175 | 183 | | |
176 | 184 | | |
177 | 185 | | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
178 | 196 | | |
179 | 197 | | |
180 | 198 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
171 | 181 | | |
172 | 182 | | |
173 | 183 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
83 | 92 | | |
84 | 93 | | |
85 | 94 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
177 | 177 | | |
178 | 178 | | |
179 | 179 | | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
356 | 356 | | |
357 | 357 | | |
358 | 358 | | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
359 | 390 | | |
360 | 391 | | |
361 | 392 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| |||
212 | 212 | | |
213 | 213 | | |
214 | 214 | | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
215 | 225 | | |
216 | 226 | | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
217 | 235 | | |
218 | 236 | | |
219 | | - | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
220 | 242 | | |
221 | 243 | | |
222 | 244 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
554 | 554 | | |
555 | 555 | | |
556 | 556 | | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
557 | 592 | | |
558 | 593 | | |
559 | 594 | | |
| |||
0 commit comments