Repository navigation
Commit 0b60a2b
Release prep: hardened webview fixes, launcher routing scrub, README quick start (#8)
* fix(md-copy): leading semicolon on the injected payload (ASI safety)
When appended after a bundle whose final statement is an expression with no
trailing semicolon, the IIFE would parse as a call on that expression and throw
before the webview app initializes. Prefix the payload with ';' so the patch is
safe regardless of the bundle's final token. Regenerated the three embeds; adds a
node-exec test on a no-semicolon bundle.
Not triggered by the current 2.1.170 bundle (it ends with '}'); this hardens
against future builds. Codex PR review, P2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(md-copy): single-icon copy with real-success gating; drop plain-text + --open
Fix the "says Copied but nothing copied" bug and redesign the injected controls:
- copyText now reports REAL success: synchronous execCommand("copy") first
(gesture-safe, secure-context-independent), Clipboard API fallback; the icon
flips to a checkmark only on a genuine copy, and empty text is never success
- replace the "Copy" text + caret + "Copy as plain text" menu with a single
clipboard icon (Markdown only); checkmark for ~2s, no "Copied" label
- decorate is idempotent (prunes duplicates) -> fixes the double rows of buttons
- whole-conversation control is one gated icon (conversation view only), pinned
top-right (top:26px right:4px)
- cc-export.py: drop the --open flag (open raw .jsonl) per product decision
- regenerate embeds into launcher/claudemax, claudemax.win.js, add-md-copy.py
- tests: add tests/test_md_clipboard.py (copyText honesty: empty/exec/api/no-false
-success); replace the export --open test with a rejection test; 91 tests green
* feat(launcher): routing scrub + local-env anchor; docs: quick start, demote unmaintained thinking options
Release-prep batch landing the hardened webview fixes plus launcher and docs work.
- context-icon: match the guard pair by shape (variable-name captures) and store
the matched names in the ownership marker, so patch and undo survive minified
renames (t/c, Z/U) across bundles 2.1.108-2.1.172.
- md-copy: keep visible thinking summaries copyable, gate tool-only turns so no
stale/misplaced copy icon appears, and handle DETAILS/SUMMARY in the converter.
- launcher: add CC_SCRUB_ROUTING (default off) to clear third-party model routing
before launch, plus a `ccwa-local-env` injection anchor for personal builds;
documented in the header toggle list. Covered by new bash + Windows tests.
- docs: README Quick start with two downloads and three screenshots; demote the
unmaintained extension.js patch and local proxy to short TECHNICAL.md links
(kept as test-covered scripts); Compatibility refreshed through 2.1.172.
108 tests pass; gen-embeds --check --strict, bash -n, node --check, git diff --check clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(readme): date the fixes 2026-06-10; cap screenshots at max-width 100%
- Bump all three workaround entries to [updated 2026-06-10].
- Render the screenshots via <img style="max-width:100%;height:auto"> so they
never overflow the container (GitHub already caps; this also covers the site).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(context-icon): var-agnostic reversal of legacy bare markers
Codex review on #8: a bundle an older var-agnostic launcher patched on a non-t/c
build (the docs call out Z/U) carries a BARE /*ccwa-context-icon*/ marker on
renamed guard vars. undo matched bare forms with literal t/c, so a Z/U bare form
fell through to the broad >=101->>=50 fallback (bash), which reverted the gate
but LEFT the marker; apply then exits early on the marker and commits the
original 50% gate, hiding the icon. The Windows launcher and standalone patcher
had the same gap (no fallback, so they left the bare form and warned).
- bash + win.js + fix-context-icon.py: recognize the both-guards bare marker by
shape (variable-name captures) and restore pristine, plus a final pass that
strips any leftover bare marker so apply is never wedged by an unrecognized form.
- Tests: a legacy Z/U bare marker upgrades to the metadata form on both launchers
(enabled + disabled) and the standalone patcher. 113 tests pass.
The ===0-removed bare form on non-t/c vars (if(U>=101)...}/*marker*/) is
irrecoverable by construction - the original guard var was deleted with no
metadata - and was never produced (bare markers were t/c-only; var-agnostic
patching shipped with the metadata marker that records the removed var). The
orphan-marker strip keeps even that hypothetical from wedging apply.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(context-icon): heal already-wedged bundle; drop over-broad bash undo
Codex audit follow-up to 7495f82. Two bash-only gaps vs the Windows
launcher and fix-context-icon.py, both of which already handled these:
P1 - already-wedged state not recovered. _cc_undo_context_icon returned
early unless it saw `>=101)return null}`, so a file an older buggy undo left
as `if(Z===0)return null;if(U>=50)return null}/*ccwa-context-icon*/` (gate
already reverted to >=50, bare marker still appended) skipped the
orphan-marker strip. apply then early-exits on the leftover marker and the
icon stays hidden. The early-out now also fires on a leftover marker, so the
strip runs and heals it (pristine -> re-patch). As a side effect the
emergency backup now captures the true pristine form, not the wedged
intermediate.
P2 - over-broad unowned rewrite. The generic `>=101)return null}` ->
`>=50)return null}` fallback rewrote upstream code that merely resembled a
patched value (e.g. an unowned `if(U>=101)return null}`), violating the
ownership invariant. Removed it; every form we actually write is covered by
the scoped substitutions above, so nothing real is lost.
Tests: add the Z/U `>=50 + bare marker` wedged-heal regression (enabled and
disabled) and an unowned `>=101` no-rewrite guard, across bash, Windows, and
the standalone patcher. 113 -> 121 tests, all green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(readme): update context-icon screenshot
Replace the context-usage screenshot and correct the alt text to match: the
new capture shows the icon and tooltip at 51 percent context used (49 percent
remaining until auto-compact).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 6e076f3 commit 0b60a2b
21 files changed
Lines changed: 1217 additions & 445 deletions
File tree
- fixes
- context-icon
- markdown-copy-export
- launcher
- media
- tests
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| 99 | + | |
| 100 | + | |
99 | 101 | | |
100 | 102 | | |
101 | 103 | | |
| |||
113 | 115 | | |
114 | 116 | | |
115 | 117 | | |
| 118 | + | |
| 119 | + | |
116 | 120 | | |
117 | 121 | | |
118 | 122 | | |
| |||
172 | 176 | | |
173 | 177 | | |
174 | 178 | | |
175 | | - | |
| 179 | + | |
176 | 180 | | |
177 | 181 | | |
178 | 182 | | |
179 | 183 | | |
180 | 184 | | |
181 | 185 | | |
182 | | - | |
| 186 | + | |
183 | 187 | | |
184 | 188 | | |
185 | | - | |
| 189 | + | |
186 | 190 | | |
187 | 191 | | |
188 | 192 | | |
| |||
197 | 201 | | |
198 | 202 | | |
199 | 203 | | |
200 | | - | |
201 | | - | |
| 204 | + | |
| 205 | + | |
202 | 206 | | |
203 | 207 | | |
204 | 208 | | |
| |||
251 | 255 | | |
252 | 256 | | |
253 | 257 | | |
254 | | - | |
| 258 | + | |
255 | 259 | | |
256 | | - | |
| 260 | + | |
257 | 261 | | |
258 | 262 | | |
259 | 263 | | |
| |||
269 | 273 | | |
270 | 274 | | |
271 | 275 | | |
272 | | - | |
| 276 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
29 | 30 | | |
30 | 31 | | |
31 | 32 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
38 | 43 | | |
39 | 44 | | |
40 | 45 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
21 | | - | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
22 | 23 | | |
23 | | - | |
| 24 | + | |
| 25 | + | |
24 | 26 | | |
25 | | - | |
26 | | - | |
27 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
28 | 34 | | |
29 | 35 | | |
30 | 36 | | |
| |||
48 | 54 | | |
49 | 55 | | |
50 | 56 | | |
| 57 | + | |
51 | 58 | | |
52 | 59 | | |
53 | 60 | | |
54 | 61 | | |
55 | | - | |
56 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
57 | 81 | | |
58 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
59 | 105 | | |
60 | 106 | | |
61 | 107 | | |
| |||
103 | 149 | | |
104 | 150 | | |
105 | 151 | | |
106 | | - | |
| 152 | + | |
107 | 153 | | |
108 | | - | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
109 | 157 | | |
110 | 158 | | |
111 | 159 | | |
112 | 160 | | |
| 161 | + | |
| 162 | + | |
113 | 163 | | |
114 | 164 | | |
115 | 165 | | |
116 | 166 | | |
117 | | - | |
| 167 | + | |
118 | 168 | | |
119 | 169 | | |
120 | 170 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
30 | | - | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
46 | 49 | | |
47 | 50 | | |
48 | 51 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
15 | 14 | | |
16 | 15 | | |
17 | 16 | | |
| |||
21 | 20 | | |
22 | 21 | | |
23 | 22 | | |
24 | | - | |
25 | 23 | | |
26 | 24 | | |
27 | 25 | | |
| |||
157 | 155 | | |
158 | 156 | | |
159 | 157 | | |
160 | | - | |
161 | 158 | | |
162 | 159 | | |
163 | 160 | | |
| |||
168 | 165 | | |
169 | 166 | | |
170 | 167 | | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | 168 | | |
181 | 169 | | |
182 | 170 | | |
| |||
0 commit comments