rea/scripts
FeeHaard fd65e278be
fix(setup): resolve the configuration MSIX Claude Desktop reads (#2426)
* fix(setup): resolve the configuration MSIX Claude Desktop reads

On Windows, setup, doctor and uninstall always used
%APPDATA%\Claude\claude_desktop_config.json. The MSIX build of Claude
Desktop (package family Claude_pzs8sxrjxfjjc) virtualizes AppData writes
and reads its package-private copy under
%LOCALAPPDATA%\Packages\<family>\LocalCache\Roaming\Claude once it exists.
Setup from an ordinary process therefore wrote a file the app never reads,
and doctor reported that file healthy.

Resolve the Claude Desktop location once, in supportedClients(): the
private copy when it exists, else the AppData file the package still
reads, else a new private copy. An unrecognized Claude_* publisher or
unreadable package storage is reported instead of falling back to AppData.

Compare one of the package's private files with its AppData path through
realpath.native to learn whether the running package started this
process. From that redirected view, or when no file can be compared,
setup and uninstall refuse to change Claude Desktop's configuration,
because the running app rewrites it from memory. From a redirected view
they also refuse writes under %APPDATA% and %LOCALAPPDATA% for other
clients and skills, which would land in the package's private storage.

Setup refuses to register a launcher stored in any MSIX package's
private storage, discloses which file the package reads, and tells the
user to quit Claude Desktop fully on every platform. Configuration fails
with target_changed if the package switched to its private copy after
the plan was shown. Uninstall removes REA from both files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(setup): record the verified MSIX Claude Desktop registration

On the Windows 11 host with the MSIX build 2.31226.1.0, setup from an
ordinary terminal with the app quit wrote the package-private copy. After
the app restarted, the entry persisted, doctor reported it aligned, and
Claude Desktop's MCP log showed REA starting and answering tools/list.
Uninstall against the real app remains unverified.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* style(setup): format MSIX review corrections

* fix(setup): carry the admitted legacy path through uninstall removal

clientRegistrationRemoval returned a removeLegacy boolean, and removeClient
recomputed the legacy path separately, so TypeScript could not prove the
path existed when removeLegacy was true and `tsc --noEmit` failed in
Uninstall.ts. The decision now returns the admitted legacy path itself;
preflight and removal consume that one value.

The alias regression matched new-destination children with a "/"
separator while building paths with path.join, so it failed on Windows.
It now uses path.sep.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(setup): split MSIX Claude Desktop lifecycle cases under the function length limit

The uninstall cases pushed the registration lifecycle describe past the 150-line lint limit. Group them separately, with the AppData registration case kept among the registration cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
2026-10-13 22:04:22 +08:00
..
ci fix(android): clean Windows workspaces after owner termination (#2440) 2026-10-13 22:03:16 +08:00
fixtures fix(browser): exclude sensitive binary lengths from historical captures (#2477) 2026-10-13 14:49:47 +08:00
lib feat(ida): resolve containing procedures and report the admitted program as the document (#2374) 2026-10-13 20:56:20 +08:00
verify fix(android): clean Windows workspaces after owner termination (#2440) 2026-10-13 22:03:16 +08:00
audit-website-links.py chore(website): simplify maintenance and detect documentation drift 2026-10-10 20:27:01 +08:00
build-conformance-fixtures.mjs refactor(schema): remove data-only version markers 2026-09-29 08:45:36 +08:00
build-ghidra-nativeaot.mjs fix(ghidra): isolate optional nativeaot script sources 2026-10-11 09:35:22 +08:00
build-windows-native.mjs fix(windows): retain failed native inspection ownership (#1826) 2026-10-11 21:33:25 +08:00
bundle-runtime.d.mts perf(cli): bundle runtime entries to reduce Windows startup I/O (#1996) 2026-10-12 09:25:27 +08:00
bundle-runtime.mjs fix(cli): preserve failure semantics across full-output formats 2026-10-13 03:33:27 +08:00
check-dependency-install.mjs fix(deps): run freshness check from escaped paths 2026-07-16 19:51:25 +08:00
check-doc-facts.mjs build: add canonical product catalog and docs drift checks 2026-07-15 17:43:52 +08:00
clean-build-output.mjs build: separate runtime artifacts and supervise command ownership 2026-10-09 20:11:17 +08:00
create-ghidra-windows-fixture.mjs fix(native): preserve compact reference provenance (#1438) 2026-10-10 21:39:28 +08:00
electron-active-hook-boundaries.cjs fix(capture): retain Electron observations and HAR resource failures 2026-10-09 06:49:02 +08:00
electron-active-hook.cjs fix(capture): retain Electron observations and HAR resource failures 2026-10-09 06:49:02 +08:00
generate-completion-ledger.mjs fix(build): make catalogs and packaged skills generated outputs (#1086) 2026-10-08 22:43:51 +08:00
generate-error-schema.mjs chore: migrate formatting to Oxfmt (#615) 2026-10-06 01:59:19 +08:00
generate-mcp-tool-catalog.mjs build: separate runtime artifacts and supervise command ownership 2026-10-09 20:11:17 +08:00
generate-nativeaot-fixtures.mjs fix(ghidra): resolve file offsets in decompile (#2101) 2026-10-13 18:23:17 +08:00
generate-package-metadata.mjs fix(skills): expose authored skill to repository discovery 2026-10-10 14:20:22 +08:00
generate-product-catalog.mjs fix(build): make catalogs and packaged skills generated outputs (#1086) 2026-10-08 22:43:51 +08:00
generate-skill-metadata.mjs fix(skills): expose authored skill to repository discovery 2026-10-10 14:20:22 +08:00
generate-third-party-inventory.mjs fix: align MCP archive contracts and documentation (#2478) 2026-10-13 12:06:41 +08:00
hopper-demo-x11.py fix(hopper): stop Linux demo children when the REA owner exits (#2499) 2026-10-13 12:59:22 +08:00
prepack.mjs fix(cli): preserve failure semantics across full-output formats 2026-10-13 03:33:27 +08:00
prepare-website.py feat(website): add multilingual editions and translation workflow 2026-10-11 17:24:46 +08:00
prepare.mjs build: streamline local and CI validation 2026-07-22 16:06:28 +00:00
print-mcp-config.mjs fix(npm): use latest entry points without install scripts 2026-07-17 00:16:46 +00:00
rea-android-workspace-guardian.mjs fix(android): clean Windows workspaces after owner termination (#2440) 2026-10-13 22:03:16 +08:00
rea.mjs fix(cli): normalize empty Windows profile before imports (#2482) 2026-10-13 12:43:52 +08:00
release-notes.mjs fix(release): avoid duplicated contributor thanks 2026-10-11 11:49:49 +08:00
release-npm-tag.mjs fix(release): publish prereleases under the next npm tag 2026-10-09 00:49:30 +08:00
run-development-tests.mjs build: separate runtime artifacts and supervise command ownership 2026-10-09 20:11:17 +08:00
run-exclusive-command.mjs fix(dev): preserve command arguments in exclusive runners 2026-10-13 04:12:45 +08:00
run-exclusive.mjs build: separate runtime artifacts and supervise command ownership 2026-10-09 20:11:17 +08:00
scan-todos.mjs chore(scripts): merge duplicate node:fs import in scan-todos (#1790) 2026-10-11 18:18:10 +08:00
test-website.py feat(website): add a persistent light and dark theme switch 2026-10-13 09:27:49 +08:00
verify-adb.mjs feat(adb): complete ADB device support for Android reverse engineering (#1552) 2026-10-10 23:01:24 +08:00
verify-agent-experience.mjs feat(skills)!: improve Codex onboarding and task recovery (#1613) 2026-10-11 03:13:56 +08:00
verify-apktool.mjs fix(android): preserve decoded values and duplicate class inventories 2026-10-12 06:29:13 +08:00
verify-binary-layout.mjs fix(native): clarify Mach-O offset origins and reject partial ELF tables 2026-10-12 06:29:19 +08:00
verify-browser-dom-destinations.mjs fix(verify): report final success only after resource cleanup 2026-10-09 04:12:49 +08:00
verify-browser-modules.mjs feat(browser): trace captured website module imports (#879) 2026-10-07 14:59:52 +08:00
verify-browser-network.mjs feat(browser): capture correlated network content and lifecycle evidence (#797) 2026-10-07 04:35:49 +08:00
verify-browser-runtime.mjs feat(browser): attribute native execution and listener sources (#917) 2026-10-07 21:45:07 +08:00
verify-browser-scripts.mjs feat(web): export captured scripts for JavaScript application analysis (#801) 2026-10-07 05:24:32 +08:00
verify-browser-source-maps.mjs fix(browser): compose nested source-map column offsets (#1109) 2026-10-09 02:01:29 +08:00
verify-claude-client.mjs perf(mcp)!: compact repeated session discovery facts (#1988) 2026-10-12 07:40:19 +08:00
verify-commandcode-client.mjs fix(clients): preserve portable MCP schemas in native workflows (#1580) 2026-10-11 00:09:43 +08:00
verify-conformance-fixtures.mjs refactor(schema): remove data-only version markers 2026-09-29 08:45:36 +08:00
verify-copilot-client.mjs fix(tests): separate Copilot model IDs from wire models (#1647) 2026-10-11 06:52:45 +08:00
verify-deepseek-client.mjs feat(setup): register DeepSeek Harness through setup, doctor and uninstall (#1929) 2026-10-12 11:06:26 +08:00
verify-evm-interface.mjs feat(evm): inspect lossless Solidity terminal CBOR metadata (#2790) 2026-10-13 21:55:30 +08:00
verify-flutter.mjs feat(flutter): identify Dart snapshot builds and inspect AOT payloads by pure APK parsing (#1582) 2026-10-12 22:35:55 +08:00
verify-frida.mjs feat: add Frida instrumentation support (#1359) 2026-10-12 22:01:58 +08:00
verify-gemini-client.mjs test(clients): verify native Gemini CLI integration on Windows (#1936) 2026-10-12 10:50:11 +08:00
verify-go-binary.mjs fix(go): accept file-backed unmapped Mach-O debug segments 2026-10-13 03:47:45 +08:00
verify-grok-client.mjs test(clients): verify native Grok Build workflows (#1571) 2026-10-10 22:59:43 +08:00
verify-jeb.mjs feat(jeb): add JEB engine provider over its MCP interface (#1536) 2026-10-10 23:03:27 +08:00
verify-linux-setup-e2e.mjs test(hopper): repair Linux demo setup and native verification (#2638) 2026-10-13 14:39:18 +08:00
verify-mcp-registry-metadata.mjs feat(electron): add autonomous Electron runtime analysis (#464) 2026-08-05 19:07:46 +08:00
verify-module-boundaries.mjs build: verify resolved module boundaries (#862) 2026-10-07 13:02:28 +08:00
verify-native-agent-client.mjs fix(onboarding): isolate client homes and clarify npm release support (#1627) 2026-10-11 04:37:31 +08:00
verify-native-calls.mjs test(native): retain trace diagnostics when observed hits differ 2026-10-10 04:39:17 +08:00
verify-native-ui.mjs refactor!: enforce canonical evidence and provider boundaries 2026-10-09 20:18:52 +08:00
verify-omp-client.mjs fix(setup): reject invalid OMP profiles before fallback writes (#1562) 2026-10-10 22:11:14 +08:00
verify-opencode-client.mjs test(clients): verify native OpenCode integration (#1546) 2026-10-10 19:51:30 +08:00
verify-package-artifact.mjs feat(native): add investigation features (#486) 2026-09-30 00:41:05 +08:00
verify-package-capabilities.mjs perf(mcp)!: compact repeated session discovery facts (#1988) 2026-10-12 07:40:19 +08:00
verify-package-discovery.d.mts fix(package): separate agent and Hopper setup support (#584) 2026-10-06 00:00:15 +08:00
verify-package-discovery.mjs fix(package): separate agent and Hopper setup support (#584) 2026-10-06 00:00:15 +08:00
verify-package-environment.d.mts fix(test): use direct Node launcher on macOS 2026-07-24 03:31:26 +00:00
verify-package-environment.mjs fix(setup): resolve the configuration MSIX Claude Desktop reads (#2426) 2026-10-13 22:04:22 +08:00
verify-package-evidence.mjs refactor(adapters): split oversized provider workflows 2026-07-18 05:49:14 +00:00
verify-package-install.mjs feat: add Hermes as a supported MCP client (#1403) 2026-10-10 16:03:25 +08:00
verify-package-managed.mjs test(managed): include shared dossier fixture in artifact inputs 2026-10-10 04:09:45 +08:00
verify-package-mcp.mjs test(mcp): align completion checks with provider readiness 2026-10-12 18:44:02 +08:00
verify-package-pack.mjs fix(skills): expose authored skill to repository discovery 2026-10-10 14:20:22 +08:00
verify-package-platform.d.mts fix: consolidate boundary ownership and cleanup failure paths (#477) 2026-09-08 10:59:13 +08:00
verify-package-platform.mjs refactor: return complete tool results inline 2026-09-29 07:08:46 +08:00
verify-package-prompts.mjs test(mcp): align completion checks with provider readiness 2026-10-12 18:44:02 +08:00
verify-package-setup.mjs fix(setup): preserve initial backups and Codex comments (#1204) 2026-10-09 12:57:00 +08:00
verify-package-unknown-provider.mjs refactor(adapters): split oversized provider workflows 2026-07-18 05:49:14 +00:00
verify-package-update.mjs fix(setup): resolve the configuration MSIX Claude Desktop reads (#2426) 2026-10-13 22:04:22 +08:00
verify-package.mjs ci: separate fast feedback from full qualification 2026-10-13 17:09:53 +08:00
verify-packaged-ghidra-windows.mjs perf(mcp)!: compact repeated session discovery facts (#1988) 2026-10-12 07:40:19 +08:00
verify-packaged-wasm-artifact.mjs feat(wasm): inspect local artifacts with WABT (#1533) 2026-10-11 19:49:00 +08:00
verify-packed-bridge.mjs perf(ghidra): compile bundle activator with bridge scripts (#1931) 2026-10-12 02:46:32 +08:00
verify-packet-capture.mjs feat(captures): discover installed protocol and field definitions (#2496) 2026-10-13 15:55:25 +09:00
verify-pcap.mjs feat(pcap): add bounded capture summaries through CLI and MCP 2026-10-13 04:53:03 +00:00
verify-published-package.mjs fix(setup): resolve the configuration MSIX Claude Desktop reads (#2426) 2026-10-13 22:04:22 +08:00
verify-qlog-captures.mjs feat(browser): inspect retained aioquic qlog JSON captures 2026-10-13 03:24:05 +00:00
verify-qwen-client.mjs test(clients): verify Qwen Code on native Windows (#2103) 2026-10-13 21:27:45 +08:00
verify-real-browser.mjs fix(ci): close speculative browser fixture connections 2026-10-11 11:05:08 +08:00
verify-real-electron.mjs fix(electron): attribute unresolved paths to selected inputs 2026-10-13 04:12:40 +08:00
verify-real-ghidra-6502.mjs feat(ghidra): support raw NMOS 6502 analysis (#2079) 2026-10-13 21:13:01 +08:00
verify-real-ghidra-address-context.mjs fix(ghidra): resolve file offsets in decompile (#2101) 2026-10-13 18:23:17 +08:00
verify-real-ghidra-assertions.mjs refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
verify-real-ghidra-com.mjs refactor: prune obsolete provider and verification code 2026-10-12 08:59:14 +08:00
verify-real-ghidra-dos.mjs refactor!: enforce canonical evidence and provider boundaries 2026-10-09 20:18:52 +08:00
verify-real-ghidra-function.mjs feat(ghidra): recover signed AArch64 relative jump tables (#1592) 2026-10-11 10:45:35 +08:00
verify-real-ghidra-inventory.mjs feat(native): add investigation features (#486) 2026-09-30 00:41:05 +08:00
verify-real-ghidra-mips-relocatable.mjs fix(scripts): pass MCP callTool timeouts as request options (#2387) 2026-10-13 09:16:41 +09:00
verify-real-ghidra-mips-shared.mjs feat(ghidra): admit verified MIPS16 shared ELF images 2026-10-12 07:50:31 +08:00
verify-real-ghidra-mips.mjs feat(ghidra): admit recordless legacy MIPS32 ELFs with a pinned 32-bit language (#1898) 2026-10-13 21:42:38 +08:00
verify-real-ghidra-nativeaot.mjs refactor!: enforce canonical evidence and provider boundaries 2026-10-09 20:18:52 +08:00
verify-real-ghidra-noreturn.mjs fix(ghidra): normalize Mach-O imported symbol names 2026-10-11 09:59:27 +08:00
verify-real-ghidra-raw.mjs feat(ghidra): apply validated analyzer overrides before analysis 2026-10-12 03:49:31 +08:00
verify-real-ghidra-riscv.mjs feat(ghidra): admit RISC-V ELF analysis through a pinned generic lane (#2151) 2026-10-13 00:11:35 +08:00
verify-real-ghidra-swift.mjs feat(ghidra): decode Swift String literals in function dossiers (#2049) 2026-10-13 20:41:10 +08:00
verify-real-ghidra-switch-assertions.mjs fix(ghidra): recover evidenced switch cases and default targets (#579) 2026-10-05 22:54:17 +08:00
verify-real-ghidra-switch-controls.mjs chore: migrate formatting to Oxfmt (#615) 2026-10-06 01:59:19 +08:00
verify-real-ghidra-switch.mjs refactor!: enforce canonical evidence and provider boundaries 2026-10-09 20:18:52 +08:00
verify-real-ghidra-windows.mjs fix(ghidra): resolve file offsets in decompile (#2101) 2026-10-13 18:23:17 +08:00
verify-real-ghidra.mjs feat(ghidra): recover signed AArch64 relative jump tables (#1592) 2026-10-11 10:45:35 +08:00
verify-real-hopper-deadlines.mjs refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
verify-real-hopper-fat.mjs refactor: remove forwarding exports and redundant aliases 2026-10-09 22:46:09 +08:00
verify-real-hopper-linux.mjs test(hopper): repair Linux demo setup and native verification (#2638) 2026-10-13 14:39:18 +08:00
verify-real-hopper.mjs fix(hopper): stop Linux demo children when the REA owner exits (#2499) 2026-10-13 12:59:22 +08:00
verify-real-ida.mjs feat(ida): resolve containing procedures and report the admitted program as the document (#2374) 2026-10-13 20:56:20 +08:00
verify-reconstruction-readiness.mjs perf(domain): avoid duplicate readiness bundle validation 2026-10-11 13:29:11 +08:00
verify-recorded-crash.mjs feat(native): inspect recorded crashes through pwntools and pwndbg (#1054) 2026-10-08 16:50:31 +08:00
verify-release-checkpoint.mjs fix(release): validate frozen checkpoint versions and breaking notes 2026-10-08 10:13:05 +00:00
verify-repository-skill.mjs fix(skills): expose authored skill to repository discovery 2026-10-10 14:20:22 +08:00
verify-signal-recording.mjs feat(signals): discover installed decoders and option help (#2487) 2026-10-13 15:58:19 +09:00
verify-solidity-metadata.mjs feat(evm): inspect lossless Solidity terminal CBOR metadata (#2790) 2026-10-13 21:55:30 +08:00
verify-test-discovery.mjs fix(verify): report final success only after resource cleanup 2026-10-09 04:12:49 +08:00
verify-test-temp-hygiene.mjs fix(verify): report final success only after resource cleanup 2026-10-09 04:12:49 +08:00
verify-wasm-artifact.mjs fix(wasm): preserve leading BOM in custom section names (#2102) 2026-10-12 18:39:01 +08:00
verify-web-network-captures.mjs feat(mcp): derive an API surface view from retained web network captures (#1891) 2026-10-12 10:44:17 +08:00
verify-website.py feat(website): add multilingual editions and translation workflow 2026-10-11 17:24:46 +08:00
verify-windows-native-artifact.mjs fix(formats): preserve high bits in remaining magic-byte checks (#2384) 2026-10-13 20:54:37 +08:00
verify-windows-native-inspection.mjs fix(windows): retain failed native inspection ownership (#1826) 2026-10-11 21:33:25 +08:00
verify-windows-native.mjs fix(windows): preserve caller affinity only within one processor group (#2202) 2026-10-13 14:49:34 +08:00
verify-windows-package.mjs fix(setup): resolve the configuration MSIX Claude Desktop reads (#2426) 2026-10-13 22:04:22 +08:00
website.py fix(website): keep omitted language selectors free of whitespace 2026-10-13 18:21:09 +08:00
website_i18n.py fix(website): incorporate multilingual contributor refinements 2026-10-11 17:24:46 +08:00
windows-capabilities.mjs feat(ghidra): define the Windows P0 admission boundary 2026-07-17 03:05:19 +09:00